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 数据库吗? @bshelt141 您可以在传递给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的主要内容,如果未能解决你的问题,请参考以下文章
使用 sparklyr 或 dplyr 获取组组合中的成员资格
spark利用sparkSQL将数据写入hive两种通用方式实现及比较