Spark 将数据帧直接从 Hive 写入本地文件系统

Posted

技术标签:

【中文标题】Spark 将数据帧直接从 Hive 写入本地文件系统【英文标题】:Spark write Dataframes directly from Hive to local file system 【发布时间】:2019-05-14 02:13:17 【问题描述】:

这个问题几乎是这里要求的复制品:Writing files to local system with Spark in Cluster mode

但我的查询有点曲折。上面的页面使用 spark 将文件从 HDFS 直接写入本地文件系统,但在将其转换为 RDD 之后。

我正在寻找仅适用于 Dataframe 的选项;将海量数据转换为 RDD 会影响资源利用率。

【问题讨论】:

写入HDFS后为什么不直接复制到本地文件系统? 【参考方案1】:

您可以使用以下语法直接将数据帧写入 HDFS 文件系统。

df.write.format("csv").save("path in hdfs")

更多详情请参考 spark 文档:https://spark.apache.org/docs/2.2.0/sql-programming-guide.html#generic-loadsave-functions

【讨论】:

谢谢。但我的查询是从 HDFS 写入本地,你指的是完全相反的。但是,如果我提到这样的save("file:///path/to/local"),它将保存在本地。但它永远不会在本地写任何东西,但会创建一个目录。当我检查时,它实际上是在执行程序运行的数据节点上创建本地文件。我想我必须寻找将这些执行程序的数据带到驱动程序的东西。如果你知道怎么做,请告诉。

以上是关于Spark 将数据帧直接从 Hive 写入本地文件系统的主要内容,如果未能解决你的问题,请参考以下文章

将 Spark Dataframe 直接写入 HIVE 需要太多时间

从 spark(2.11) 数据帧写入 hive 分区表时出现 org.apache.hadoop.hive.ql.metadata.Hive.loadDynamicPartitions 异常

将 PySpark 数据帧写入分区 Hive 表

使用 phoenix 连接器将 Spark 数据帧写入 Hbase

spark利用sparkSQL将数据写入hive两种通用方式实现及比较

spark利用sparkSQL将数据写入hive两种通用方式实现及比较