我尝试使用ClickHouse JDBC驱动程序在Spark和ClickHouse之间建立JDBC连接。但是,我遇到了以下错误:
Py4JJavaError: An error occurred while calling o101.load.
: java.lang.NoClassDefFoundError: Could not initialize class ru.yandex.clickhouse.ClickHouseDriver
字符串
下面是我使用的相关代码片段:
spark = SparkSession.builder \
.appName("ClickHouse Example") \
.master("spark://spark-master:7077") \
.config("spark.driver.extraClassPath", "/opt/spark/jars/clickhouse-jdbc-0.4.6-all.jar") \
.getOrCreate()
properties = {
"url": "jdbc:clickhouse://127.0.0.1:8123/clickstream_data",
"user": "1",
"password": "2"
}
df = spark.read \
.format("jdbc") \
.option("url", properties["url"]) \
.option("dbtable", "123") \
.option("user", properties["user"]) \
.option("password", properties["password"]) \
.option("driver", "ru.yandex.clickhouse.ClickHouseDriver") \
.load()
型
我已经下载了ClickHouse JDBC驱动程序(clickhouse-jdbc-0.4.6-all.jar)并将其放置在正确的目录(/opt/spark/jars/)中。但是,似乎驱动程序无法识别或存在兼容性问题。
是什么导致了这些错误,我该如何解决它们?为了在Spark和ClickHouse之间建立成功的JDBC连接,我需要执行哪些额外的步骤或配置吗?
任何帮助或指导将不胜感激。谢谢!
1条答案
按热度按时间3j86kqsm1#
将ClickHouse Integration Spark工件jar添加到启动器jar中,然后在使用jdbc格式之前添加以下行。
字符串