配置pyspark的pip环境
pip install pyspark==3.2.1 pandas numpy matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
Pyspark将文件(Parquet)上传至HDFS
sudo docker exec namenode hdfs dfs -mkdir /input \
&& sudo docker exec namenode hdfs dfs -put /input/data.parquet /input
Pyspark读取HDFS的parquet
from pyspark import SparkContext, SparkConf
from pyspark.sql.session import SparkSession
# 建立sparkSession进行parquet文件读取及分析
spark = SparkSession.builder \
.master("spark://914455781cf3:7077") \
.appName("readParquet") \
.config("spark.some.config.option", "some-value") \
.getOrCreate()
# 上传parquet文件到hdfs中之后,使用pyspark读取数据并分析
df = spark.read.parquet("hdfs://namenode:9000/input/example1.parquet")
# 数据操作
df.first() # 显示第一条数据,Row格式
df.columns # 列名
df.count() # 数据量,数据条数
df.toPandas() # 从spark的DataFrame格式数据转到Pandas数据结构
df.show() # 直接显示表数据;其中df.show(n) 表示只显示前n行信息
type(df) # 数据显示格式
Pyspark读取S3的parquet
from pyspark.sql import SparkSession, SQLContext
from pyspark.sql import Window
ACCESS_KEY_ID = 'xxxxxx'
SECRET_ACCESS_KEY = 'xxxxxx'
END_POINT = 's3.cn-northwest-1.amazonaws.com.cn'
spark = SparkSession.builder \
.master("spark://107a4abc4ef9:7077") \
.appName("readParquet") \
.config("spark.some.config.option", "some-value") \
.getOrCreate()
#设置conf的信息
hadoopConf = spark.sparkContext._jsc.hadoopConfiguration()
hadoopConf.set("fs.s3a.endpoint", END_POINT)
hadoopConf.set("fs.s3a.access.key", ACCESS_KEY_ID)
hadoopConf.set("fs.s3a.secret.key", SECRET_ACCESS_KEY)
bucket_name = 'tmpspark'
parquetFile_name = 'osb+0+23139010766.parquet'
bucket_path = f"s3a://{bucket_name}/{parquetFile_name}"
df = spark.read.parquet(bucket_path)
# 数据操作
print("\n")
print("First Row:")
print(df.first()) # 显示第一条数据,Row格式
print("\n")
print("Columns Name:")
print(df.columns) # 列名
print("Counts:")
print(df.count()) # 数据量,数据条数
print("\n")
print("Table:")
df.toPandas() # 从spark的DataFrame格式数据转到Pandas数据结构
df.show(3) # 直接显示表数据;其中df.show(n) 表示只显示前n行信息
print("\n")
print("Data Frame:")
print(type(df)) # 数据显示格式
print("\n")
大厂如何基于spark+机器学习构建千万数据规模上的用户留存模型
https://developer.aliyun.com/article/994977