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 异常
使用 phoenix 连接器将 Spark 数据帧写入 Hbase