我已将 Spark 数据帧以 Parquet 格式 partitionby 列“channel_name”保存到 AWS S3。下面的代码是我如何保存到 S3:
df.write.option("header",True) \
.partitionBy("channel_name") \
.mode("overwrite") \
.parquet("s3://path/")
频道名称 | 开始时间戳 | 价值 | 离群值 |
---|---|---|---|
温度 | 2021-07-19 07:27:51 | 21 | 错误的 |
温度 | 2021-07-19 08:21:05 | 24 | 错误的 |
速度 | 2021-07-19 08:20:18 | 22 | 错误的 |
速度 | 2021-07-19 08:21:54 | 26 | 错误的 |
温度 | 2021-07-19 08:21:23 | 25 | 错误的 |
温度 | 2021-07-16 08:22:41 | 88 | 错误的 |
由于它是按“channel_name”分区的,现在在从 S3 读取相同数据时,它缺少该列“channel_name”。下面是我的 pyspark 和 python 代码。
df = spark.read.parquet("s3://Path/") #spark
对于 Python,我使用的是 AWS 牧马人:
import awswrangler as wr
df = wr.s3.read_parquet(path="s3://Path/")
这就是没有列“channel_name”的 df 的样子。
开始时间戳 | 价值 | 离群值 |
---|---|---|
2021-07-19 07:27:51 | 21 | 错误的 |
2021-07-19 08:21:05 | 24 | 错误的 |
2021-07-19 08:20:18 | 22 | 错误的 |
2021-07-19 08:21:54 | 26 | 错误的 |
2021-07-19 08:21:23 | 25 | 错误的 |
2021-07-16 08:22:41 | 88 | 错误的 |
如何读取包括分区列在内的完整数据,如果有其他选择,请告诉我。