通过Spark SQL将表格与Elastic搜索连接起来

时间:2015-02-23 20:27:55

标签: elasticsearch hive tableau apache-spark-sql

我找到了一个post,讨论了如何通过Hive SQL将Tableau连接到Elastic Search。我想知道是否有办法通过Spark SQL连接到Elastic Search,因为我对hive不太熟悉。

感谢。

3 个答案:

答案 0 :(得分:1)

@NicholasY经过几次试验后,它得到了解决。我采取了两个步骤: -

  • 我没有使用正确的驱动程序进行连接。我正在使用datastax企业驱动程序。但是,他们也有spark sql的驱动程序。我使用windows 64bit版本的驱动程序。使用MapR Hadoop Hive和Hortonworks Hadoop Hive驱动程序不起作用,因为我有Apache配置单元。
  • 当我使用右驱动程序(来自DataStax)时,我意识到我的hive Metastore和spark-thrift-server在同一个端口上运行。我将spark-thrift-server的端口改为10001,并建立了成功的连接。

一个新问题:我在hive中创建了外部表。我也能查询数据。我开始使用hive-Metoreore作为服务。但是,如此link所述,我无法在Spark SQL中的hive中看到我的表。除非我看到来自hive Metastore的表格,否则我与Tableau和Spark Sql的连接是没有用的!当我在spark sql中执行 show tables; 时(通过spark-sql shell和作为服务同时运行的hive Metastore),它会运行一个作业,该作业也提供完成时间但现在是表名。我通过localhost监视它:4040我看到输入和输出大小是0.0。我相信我无法从spark sql中获取hive表,这就是为什么在从Tableau建立连接到spark sql之后我没有看到任何表的原因。

修改 对于hive和spark sql,我将Metast从derby更改为mysql。

答案 1 :(得分:1)

@ busybug91,

正确的驱动程序是here,请尝试使用此驱动程序。可以解决你的问题。

答案 2 :(得分:0)

我试图这样做,所以也许我可以帮你警告一些事情。

首先,使用Hive和thrift Server(版本0.13)编译Spark SQL版本:

export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"

mvn -Pyarn -Phadoop-2.4 -Dhadoop.version=2.4.0 -Phive -Phive-thriftserver -DskipTests clean package

您需要正确配置hive-site.xml才能使用Hive并将其复制到spark / conf文件夹。

然后,您必须使用elasticsearch-hadoop jar路径设置$ CLASSPATH。

小心! Spark SQL 1.2.0不能与elasticsearch-hadoop-2.0.x一起使用。你必须使用elasticsearch-hadoop-2.1.0-Beta4或BUILD-SNAPSHOT here

要完成,你必须使用类似的东西运行thriftserver:

./start-thriftserver.sh --master spark://master:7077 --driver-class-path $CLASSPATH --jars /root/spark-sql/spark-1.2.0/lib/elasticsearch-hadoop-2.1.0.Beta4.jar --hiveconf hive.server2.thrift.bind.host 0.0.0.0 --hiveconf hive.server2.thrift.port 10000

它适用于我但仅适用于小型docType(5000行),数据托管似乎无效。我正在寻找一个解决方案,以便为每个Spark工作人员移动elasticsearch-hadoop.jar,ryrobes为Hadoop做了。

如果您找到了一种查找elasticsearch访问权限的方法,请告诉我们;)

HTH,