sparklyr 将数据写入 hdfs 或 hive

Posted

技术标签:

【中文标题】sparklyr 将数据写入 hdfs 或 hive【英文标题】:sparklyr write data to hdfs or hive 【发布时间】:2017-12-01 02:49:55 【问题描述】:

我尝试使用 ,但找不到方法。甚至可以使用 sparklyr 将 R 数据帧写入 hdfs 或 hive 吗?请注意,我的 R 和 hadoop 在两台不同的服务器上运行,因此我需要一种从 R 写入远程 hdfs 的方法。

问候 拉胡尔

【问题讨论】:

你试过在纱线模式下运行 Spark 吗? This 帖子可能会有所帮助。 【参考方案1】:

使用 Sparklyr 将 Spark 表写入配置单元:

iris_spark_table <- copy_to(sc, iris, overwrite = TRUE)
sdf_copy_to(sc, iris_spark_table)
DBI::dbGetQuery(sc, "create table iris_hive as SELECT * FROM iris_spark_table")

【讨论】:

感谢分享。这会将数据加载到 hive 的默认数据库中。您知道如何更改要为其导出文件的 hive 数据库吗? @bshel​​t141 您可以在传递给DBI的SQL中使用语法database.table【参考方案2】:

从最新的 sparklyr 开始,您可以使用 spark_write_table。传入database.table_name格式指定数据库

iris_spark_table <- copy_to(sc, iris, overwrite = TRUE)
spark_write_table(
  iris_spark_table, 
  name = 'my_database.iris_hive ', 
  mode = 'overwrite'
)

另请参阅此 SO 帖子 here,在那里我获得了有关更多选项的一些意见

【讨论】:

【参考方案3】:

您可以使用 sdf_copy_to 将数据帧复制到 Spark,比如说 tempTable。然后使用DBI::dbGetQuery(sc, "INSERT INTO TABLE MyHiveTable SELECT * FROM tempTable") 将dataframe记录插入到hive表中。

【讨论】:

以上是关于sparklyr 将数据写入 hdfs 或 hive的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop distcp 用法/附避坑指南

HIV组件

使用 sparklyr 或 dplyr 获取组组合中的成员资格

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

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

将 spark 数据帧转换为 sparklyR 表“tbl_spark”