【发布时间】:2020-11-10 02:48:17
【问题描述】:
经过数小时的 Google 搜索后,我找不到任何关于此的内容,所以我希望我能在这里找到一些关于我的问题的想法。
我正在尝试使用 spark2 从远程配置单元集群中获取数据。我关注了:
- How to connect to a Hive metastore programmatically in SparkSQL?
- How to connect to remote hive server from spark
我能够成功连接到远程配置单元元存储。
但是,当我在远程配置单元中执行查询时,我的问题就开始了。例如 spark.sql("select count(*) from table")。我将收到“未知主机:ns-bigdata”错误。其中 ns-bigdata 是远程集群的集群名称。
我在这里还缺少什么其他东西?我还需要指定 hive.metastore.warehouse.dir 应该在哪里吗?例如hdfs://local-cluster:8020/user/hive/warehouse
提前致谢。
【问题讨论】:
-
听起来您的 DNS 服务器无法正常工作。尝试使用 IP 地址
-
不要认为是 DNS,因为我的 spark 会话能够使用主机名连接到远程配置单元元存储,即 spark.config("spark.hadoop.hive.metastore.uri", "thrift ://remote.hive.domain:9083")。
-
这只是一个字符串。在您实际运行查询之前不会尝试连接
-
尝试运行更简单的查询 spark.sql("show databases").show() 以确保连接正常。如果这工作正常,请在查询中包含数据库名称。 spark.sql("select count(*) from database.table") 另外,要明确您正在运行 spark2-submit 或 spark2-shell 的机器不在集群“ns-bigdata”中。
-
经过一番思考,我认为@cricket_007 可能是对的。想想当我尝试运行查询时,hive 试图访问 hdfs 中的仓库目录以检查架构但找不到它的位置,因为我的 spark 集群不知道 ns-bigdata 在哪里。我会试试看能不能拿到 ns-bigdata 的 IP 并尝试放入我集群的主机文件中。
标签: apache-spark hadoop hive