将 Spark SQL Hive 服务器连接到 Cassandra?

Posted

技术标签:

【中文标题】将 Spark SQL Hive 服务器连接到 Cassandra?【英文标题】:Connecting SparkSQL HiveServer to Cassandra? 【发布时间】:2015-03-18 20:30:21 【问题描述】:

所以我正在使用 Tableau、Spark 1.2 和 Cassandra 2.1.2。我已经成功地做了很多事情。

通过https://github.com/datastax/spark-cassandra-connector 从 Spark shell 连接到 Cassandra 实例。 通过前面提到的连接器对 Cassandra 实例进行 SparkSQL 查询。 使用 Tableau(适用于 Cassandra 的最新 CQL3 兼容 Simba ODBC 驱动程序:http://www.simba.com/connectors/apache-cassandra-odbc)在 Cassandra 实例上运行查询和可视化。

此时我的主要差距是,如何正确配置 Spark 1.2 ThriftServer 以便能够与我的 Cassandra 实例通信?最终目标是通过 Tableau 运行 SparkSQL(需要 ThriftServer)。我能够启动 ThriftServer 而没有问题(大部分)到我可以在示例中运行直线并执行“显示表”调用的位置。但正如您在下面看到的,它会生成一个长度为 0 的表格列表。

beeline> !connect jdbc:hive2://192.168.56.115:10000
scan complete in 2ms
Connecting to jdbc:hive2://192.168.56.115:10000
Enter username for jdbc:hive2://192.168.56.115:10000: 
Enter password for jdbc:hive2://192.168.56.115:10000: 
log4j:WARN No appenders could be found for logger (org.apache.thrift.transport.TSaslTransport).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Connected to: Spark SQL (version 1.2.0)
Driver: null (version null)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://192.168.56.115:10000> show tables;
+---------+
| result  |
+---------+
+---------+
No rows selected (1.755 seconds)
0: jdbc:hive2://192.168.56.115:10000>
我需要 datastax 连接器吗?我必须假设答案是“是”。 我是否需要声明 hive-site.xml,即使我根本没有使用 Hive? 我可以在没有 Hive/Metastore 的情况下运行此设置吗?或者这是 Spark 1.2 中 ThriftServer 的要求? 假设我现有的 Spark Master/Worker 设置是正确的,但那里可能是错误的。

帮助! :)

【问题讨论】:

运气不错,我正在做类似的事情,唯一的区别是我使用 Jasper 而不是 Tableau。 运气好吗?我有同样的问题 【参考方案1】:

您可以创建一个 Cassandra 表的global temporary view,然后您就可以通过 JDBC thrift 服务器访问它。

val spark = SparkSession
    .builder()
    .enableHiveSupport()
    .getOrCreate()

val cassandraTable = spark.sqlContext
  .read
  .cassandraFormat("mytable", "mykeyspace", pushdownEnable = true)
  .load()

cassandraTable.createGlobalTempView("mytable")

spark.sqlContext.setConf("hive.server2.thrift.port", "10000")
HiveThriftServer2.startWithContext(spark.sqlContext)
System.out.println("Server is running")

【讨论】:

以上是关于将 Spark SQL Hive 服务器连接到 Cassandra?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Spark-Notebook 连接到 Hive 元存储?

在 Spark 中使用 jdbc 驱动程序连接到 Hive

从 Apache Spark 连接到 Hive [重复]

将 spark 应用程序连接到远程 sql 服务器时出现 jdbc 连接超时错误

Spark 2 连接到 Hive MetaStore [重复]

Sqoop 和 hive 连接到 sqlserver