1

我正在尝试在 hadoop 集群(BigInsight 4.1 发行版)上创建 hive 表作为我的 spark(1.5.1 版本)作业的输出,并且面临权限问题。我的猜测是 spark 使用默认用户(在本例中为“yarn”而不是作业提交者的用户名)来创建表,因此无法这样做。

我尝试自定义 hive-site.xml 文件以设置一个经过身份验证的用户,该用户有权创建 hive 表,但这不起作用。

我还尝试将 Hadoop 用户变量设置为经过身份验证的用户,但它也不起作用。

我想避免保存 txt 文件,然后创建配置单元表以优化性能并通过 orc 压缩减小输出的大小。

我的问题是:

  • 有没有办法用指定的用户调用 spark dataframe api 的 write 函数?
  • 是否可以使用 oozie 的工作流文件选择用户名?
  • 有没有人有其他想法或曾经遇到过这个问题?

谢谢。哈塔克!

4

1 回答 1

0

考虑df持有你的数据,你可以写

在 Java 中:

df.write().saveAsTable("tableName");

您可以使用不同的 SaveMode,例如 Overwrite、Append

df.write().mode(SaveMode.Append).saveAsTable("tableName");

在斯卡拉:

df.write.mode(SaveMode.Append).saveAsTable(tableName)

根据您要保存的类型,可以指定许多其他选项。Txt、ORC(带桶)、JSON。

于 2017-10-26T20:25:05.500 回答