pyspark - 从 parquet 文件创建 pyspark 数据框
问题描述
我在 pyspark 中还很陌生,我仍在试图弄清楚谁在工作。我想要做的是在使用 pyarrow Itry 将 parquet 文件加载到内存中以使其成为 pyspark 数据帧之后。但我收到一个错误。
我应该提到我没有直接通过 pyspark 读取,因为 s3 中的文件给了我另一个关于“s3 方案没有文件系统”的错误, 所以我正在尝试解决。下面我有一个可重现的例子。
import pyarrow.parquet as pq
import s3fs
s3 = s3fs.S3FileSystem()
parquet_file=pq.ParquetDataset('s3filepath.parquet',filesystem=s3)
sc = SparkContext.getOrCreate()
spark = SparkSession(sc)
spark.createDataFrame(parquet_file)
------------------------------------------------------------------
TypeError Traceback (most recent
call last)
<ipython-input-20-0cb2dd287606> in <module>
----> 1 spark.createDataFrame(pandas_dataframe)
/usr/local/spark/python/pyspark/sql/session.py in
createDataFrame(self, data, schema, samplingRatio, verifySchema)
746 rdd, schema =
self._createFromRDD(data.map(prepare), schema, samplingRatio)
747 else:
--> 748 rdd, schema =
self._createFromLocal(map(prepare, data), schema)
749 jrdd =
self._jvm.SerDeUtil.toJavaArray(rdd._to_java_object_rdd())
750 jdf =
self._jsparkSession.applySchemaToPythonRDD(jrdd.rdd(),
schema.json())
TypeError: 'ParquetDataset' object is not iterable
解决方案
import pyspark
from pyspark.sql import SQLContext
sc = pyspark.SparkContext('local', "retail")
sqlC = SQLContext(sc)
这就是你应该如何阅读 parquet 文件来激发 df:
df = sqlC.read.parquet('path_to_file_or_dir')
推荐阅读
- ios - Crashlytics(没有 Fabric)没有显示崩溃 iOS
- ionic-framework - 如何在ionic 3中单击提交后重置输入文件
- php - Symfony 4 - 路由:“在此服务器上找不到请求的 URL”
- swift - 无法捕获 NSStoryboard.instantiateController(withIdentifier:
- javascript - 如何提交表格在哪?在 GET 方法上使用而不是 =
- ansible - 需要其他 ansible 角色的 Ansible 角色
- ios - 使用 For 循环更改 UIImageView 的图像
- c# - 有没有办法锁定一对独特的对象?
- javascript - JavaScript 确定点击事件的原因
- dataframe - 如果列尚不存在,则从列表中创建 pyspark df 中的列