elasticsearch 通过Spark SQL将tableau与弹性搜索连接起来,elasticsearch,hive,tableau-api,apache-spark-sql,elasticsearch,Hive,Tableau Api,Apache Spark Sql" /> elasticsearch 通过Spark SQL将tableau与弹性搜索连接起来,elasticsearch,hive,tableau-api,apache-spark-sql,elasticsearch,Hive,Tableau Api,Apache Spark Sql" />

elasticsearch 通过Spark SQL将tableau与弹性搜索连接起来

elasticsearch 通过Spark SQL将tableau与弹性搜索连接起来,elasticsearch,hive,tableau-api,apache-spark-sql,elasticsearch,Hive,Tableau Api,Apache Spark Sql,我发现了一个关于通过配置单元SQL将Tableau连接到弹性搜索的讨论。我想知道是否有一种方法可以通过Spark SQL连接到弹性搜索,因为我对hive不太熟悉 谢谢。我正试着这么做,也许我可以帮你提醒一下 首先,使用配置单元和thrift Server(0.13版)编译Spark SQL版本: export-MAVEN\u OPTS=“-Xmx2g-XX:MaxPermSize=512M-XX:ReservedCodeCacheSize=512M” mvn-Pyarn-Phadoop-2.4-

我发现了一个关于通过配置单元SQL将Tableau连接到弹性搜索的讨论。我想知道是否有一种方法可以通过Spark SQL连接到弹性搜索,因为我对hive不太熟悉


谢谢。

我正试着这么做,也许我可以帮你提醒一下

首先,使用配置单元和thrift Server(0.13版)编译Spark SQL版本:

export-MAVEN\u OPTS=“-Xmx2g-XX:MaxPermSize=512M-XX:ReservedCodeCacheSize=512M”

mvn-Pyarn-Phadoop-2.4-Dhadoop.version=2.4.0-Phive-Phive-thiftserver-DskipTests干净包

您需要正确配置一个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

要完成此操作,您必须运行thriftserver,如下所示:

/start-thriftserver.sh--主机spark://master:7077 --驱动程序类路径$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 workers上移动elasticsearch-hadoop.jar,就像在hadoop上一样

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


嗯,

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

  • 我没有使用正确的驱动程序进行连接。我使用的是Datasax企业驱动程序。然而,他们也有spark sql的驱动程序。我使用了windows 64位版本的驱动程序。使用MapR Hadoop配置单元和Hortonworks Hadoop配置单元驱动程序并不像我使用Apache配置单元那样有效
  • 当我使用正确的驱动程序(来自DataStax)时,我意识到我的hive元存储和spark thrift服务器运行在同一个端口上。我将spark thrift服务器的端口更改为10001,并成功建立了连接
一个新问题:我在配置单元中创建了外部表。我也能查询数据。我启动hive metastore作为一项服务。但是,正如上面提到的,我无法在Spark SQL的配置单元中看到我的表。我的Tableau与Spark Sql的连接没有任何用处,除非我看到hive metastore中的表!!当我展示桌子的时候;在spark sql中(通过spark sql shell和hive metastore同时作为服务运行),它运行一个作业,该作业也给出了完成时间,但现在给出了表名。我通过localhost:4040监视它,我看到输入和输出大小为0.0。我相信我无法从spark sql中的配置单元中获取表,这就是为什么在从Tableau到spark sql建立连接后,我看不到任何表

编辑 我将hive和spark sql的metastore从derby更改为mysql。

@busybug91


正确的驱动程序是,请试试这个。可以解决您的问题。

我已将配置单元配置为使用MySQL metastore运行。我也在hive中创建了一个外部表。类路径设置为mySql connecter和elasticsearch hadoop快照jar。将相同的配置单元配置复制到SPARK_HOME/conf。使用-Phive和-Phive thriftserver构建SPARK。虚拟机上安装了Simba Spark SQL驱动程序。使用tableau的连接到其他数据库(ODBC)连接到spark thrift服务器。Spark服务器、thirft服务器和elastic search都在运行。我仍然无法连接到它。您能否提供更多的细节,说明可能的错误。Tableau和Spark返回的错误消息是什么?您是否在元存储上创建了一个表来映射ES<代码>创建由“org.elasticsearch.hadoop.hive.EsStorageHandler”TBLProperty存储的外部表mytable(值类型,…)('es.resource'='index/doctype','es.nodes'='node1','es.port'='9200','es.query'='?q=*')经过几次试验后得到解决。我没有使用正确的驱动程序进行连接。当我使用正确的驱动程序(来自DataStax)时,我意识到我的hive元存储和spark thrift服务器运行在同一个端口上。我将spark thrift服务器的端口更改为10001,并成功建立了连接。@Nicholas您在哪里创建了此表。我在配置单元中创建了我的表,但在spark中看不到该表。@busybug91例如,您可以从spark SQL Shell或从Hive Shell.yesp创建它。我上周下载了这个驱动程序,并且能够连接到Spark SQL。但是,我看不到任何桌子。