【问题标题】:Spark 2.2.0 unable to connect to Phoenix 4.11.0 version in loading the table to DFSpark 2.2.0 在将表加载到 DF 时无法连接到 Phoenix 4.11.0 版本
【发布时间】:2019-01-06 10:45:57
【问题描述】:

我正在使用以下技术堆栈并尝试使用 PySpark 代码连接 Phoenix 表。我已经从 url 下载了以下 jars 并尝试执行以下代码。在日志中,与 hbase 的连接已建立,但控制台被卡住而无所事事。如果有人遇到并解决了类似问题,请告诉我。

https://mvnrepository.com/artifact/org.apache.phoenix/phoenix-spark/4.11.0-HBase-1.2

罐子: phoenix-spark-4.11.0-HBase-1.2.jar phoenix-client.jar

Tech Stack 都在同一主机上运行:

Apache Spark 2.2.0 版本

Hbase 1.2 版本

凤凰4.11.0版

复制文件夹路径/spark/conf/hbase-site.xml中的hbase-site.xml。

执行的命令 ->

usr/local/spark> spark-submit phoenix.py --jars /usr/local/spark/jars/phoenix-spark-4.11.0-HBase-1.2.jar --jars /usr/local/spark/ jars/phoenix-client.jar

凤凰.py:

from pyspark import SparkContext, SparkConf
from pyspark.sql import SQLContext

conf = SparkConf().setAppName("pysparkPhoenixLoad").setMaster("local")
sc = SparkContext(conf=conf)
sqlContext = SQLContext(sc)

df = sqlContext.read.format("org.apache.phoenix.spark").option("table", 
"schema.table1").option("zkUrl", "localhost:2181").load()
df.show()

错误日志:Hbase 连接已建立,但在控制台中卡住并抛出超时错误

18/07/30 12:28:15 WARN HBaseConfiguration:不推荐使用配置选项“hbase.regionserver.lease.period”。相反,使用“hbase.client.scanner.timeout.period”

18/07/30 12:28:54 INFO RpcRetryingCaller:调用异常,尝试 = 10,重试 = 35,开始 = 38367 毫秒前,取消 = 假,msg = 行'SYSTEM:CATALOG,'在表' hbase:meta' at region=hbase:meta,,1.1588230740, hostname=master01,16020,1532591192223, seqNum=0

【问题讨论】:

    标签: pyspark hbase phoenix


    【解决方案1】:

    看看这些答案:

    这两个问题都发生在 Java(使用 JDBC)中,但在这里看起来是一个类似的问题。

    尝试将 ZooKeeper 主机名(master01,正如我在错误消息中看到的那样)添加到您的 /etc/hosts

    127.0.0.1    master01
    

    如果您在本地运行所有堆栈。

    【讨论】:

    • 感谢您的回复,zookeeper 已在本地设置和设置。具有正确 IP 的主机文件点。我能够运行 Spark-Hive ORC pyspark 程序。我正在尝试通过直接连接到 hbase 来替代,但是这次是不同的问题。
    • 之前的评论不完整,请关注 - 即使我们下载了所需的 jars spark-hbase-connector_2.10-1.0,它也无法找到 org.apache.spark.sql.execution.datasources.hbase 类.3.jar 并运行命令 spark-shell --jars /usr/local/spark/jars/spark-hbase-connector_2.10-1.0.3.jar --conf "spark.executor.extraClassPath=/usr/local /spark/jars/spark-hbase-connector_2.10-1.0.3.jar"
    • 如果您想像第一个示例一样在 Python 中执行此操作,您可以阅读 this post on connecting directly Spark and HBase。我想你会遇到同样的问题:你得到的超时似乎与 Spark 连接到 HBase 集群的方式有关。但值得一试。
    • 再次感谢您分享链接。我为 pyspark 上的 Hbase 连接尝试了相同的步骤,但错误消息是如此简单的“org.apache.spark.sql.execution.datasources.hbase Java.Noclass found”异常。我检查了 JAR 路径中的类可用性。不确定 JAR 是否能够映射或者是否有人提到 python 2.7 可能不支持一些最新的 scala JAR 在 python 包装器中运行。我将在另一台服务器上从头开始。
    • 嗨,我发现这个问题有两个原因:你是对的 norbj,我一直提供的 zookeeper 主机名作为 ip addr 而不是主机名,第二个是 sparkdriver 和 executor 类路径需要每当我们提交程序时使用 -conf 参数显式设置,即使我将它们放在 spark-detault.conf 中。
    猜你喜欢
    • 2017-12-01
    • 1970-01-01
    • 2020-11-04
    • 2016-09-14
    • 2016-11-24
    • 1970-01-01
    • 2016-09-06
    • 2013-08-23
    • 1970-01-01
    相关资源
    最近更新 更多