apache-spark - Sparklyr 未连接到我的 Hive 仓库

标签 apache-spark hive hadoop-yarn sparklyr

我正在做一件非常愚蠢的事情,并尝试从头开始安装 Yarn/Hive/Spark/R 平台,而不是使用 Hortonworks 或 Cloudera。我已经解决了很多问题,但一直在尝试让我的 Sparklyr 连接到我的 Hive 仓库。

我在一台计算机上使用 Rstudio,并连接到位于单独集群上的 yarn-client。我已经将 hive-site.xml 放在几乎所有地方,本地 $SPARK_HOME/conf 和每个 hadoop 节点的 $SPARK_HOME/conf > 和 $HADOOP_CONF_DIR。在 hive-site.xml 中,我包含了参数:

  <property>
    <name>spark.sql.warehouse.dir</name>
    <value>hdfs://<driver node>/user/hive/warehouse/</value>
    <description>The loation of the hive warehouse</description>
 </property>

我觉得这应该可以清楚地表明我正在尝试使用配置单元,但是当我运行此代码时:

DBI::dbGetQuery(sc, "CREATE DATABASE test")
DBI::dbGetQuery(sc, "use test")
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")

我收到此错误:

org.apache.hadoop.hive.ql.metadata.HiveException: 
  java.io.IOException: 
    Mkdirs failed to create file:/<my-r-code's-working-dir>/spark-warehouse/test.db/iris_hive/.hive-staging_hive_2018-08-05_14-18-58_646_6160231583951115949-1/-ext-10000/_temporary/0/_temporary/attempt_20180805141859_0013_m_000000_3 
    (exists=false, cwd=file:/tmp/hadoop-hadoop/nm-local-dir/usercache/dzafar/appcache/application_1533357216333_0015/container_1533357216333_0015_01_000002)

我错过了什么???提前致谢!!!

最佳答案

首先,Spark 特定属性应放置在 Spark 配置文件中。这意味着你应该放

spark.sql.warehouse.dir

$SPARK_HOME/conf/spark-defaults.conf

此外,您可能会遇到搜索路径中不存在 hdfs-site.xml 的问题。

关于apache-spark - Sparklyr 未连接到我的 Hive 仓库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51697549/

相关文章:

python - AWS Glue,输出一个带分区的文件

scala - Spark 和 Azure-Cosmosdb 的跨版本冲突

Java hadoop api YarnClient没有 "init()/start()"功能?

r - 如何通过 rHadoopClient 在字符串中传递逗号?

hadoop - 色相可以安装在hadoop上而没有CENTOS上的ambari,cloudera或hortonworks之类的任何发行版吗?

java - 无法在 ambari 中重启 yarn 节点管理器

hadoop - 在 spark yarn 集群中,容器如何工作取决于 RDD 分区的数量?

scala - 无法在 Spark (Scala) 中的数据帧上执行用户定义的函数

scala - 将 rdd 转换为 pairRDD

sql - 如何通过在配置单元的分区表中选择另一列来覆盖列值