【发布时间】:2019-05-03 07:41:06
【问题描述】:
我有 feather 格式文件 sales.feather,用于在 python 和 R 之间交换数据。
在 R 中,我使用以下命令:
df = arrow::read_feather("sales.feather", as_data_frame=TRUE)
在python中我使用了那个:
df = pandas.read_feather("sales.feather")
将数据从该文件加载到内存到从pyspark 操作的 Spark 实例中的最佳方法是什么?
我还想控制pyspark.StorageLevel 从羽毛中读取数据。
我不想使用 pandas 加载数据,因为它会为我的 19GB 羽化文件(从 45GB csv 创建)造成段错误。
【问题讨论】:
-
是否需要直接加载到内存中,还是允许在加载到spark之前将其存储到hive中?
-
@cronoik 直接加载到内存中,或者最终使用 StorageLevel 选项直接从 spark 中映射箭头文件。中间没有蜂巢。
-
您能否尝试以下操作:
import pyarrow.feather as featherdf = spark.createDataframe(feather.read_feather('sales.feather'))。如果这不起作用,您能否告诉我们您的文件有多少列以及是否有索引列(类似于主键)? -
@cronoik 如果预计会起作用,那么您应该将其发布为答案。会尝试。 9 列,无索引。
-
我实际上不确定这是否也会导致段错误。我目前没有可以崩溃的基础设施。正确的方法是在 jvm 站点上编写自定义 converter(检查 python 选项卡),但我目前有点卡住了。
标签: apache-spark pyspark pyarrow apache-arrow feather