Apache Superset通过Spark与Mariadb的连接

时间:2019-06-29 00:44:14

标签: mysql apache-spark pyspark mariadb superset

我想在Superset中查看Mariadb的数据。我认为从Mariadb-> Spark-> Superset获取数据可能是最好的解决方案,因为我还将Spark与H2o苏打水一起使用。

1。。我尝试了 pip3安装mysqlclient ,但收到了以下错误消息:

ERROR: Command "/bin/python3 -u -c 'import setuptools, tokenize; ... failed with error code 1 in /tmp/pip-install-kslmastj/mysqlclient/

2。。我尝试使用2个配置文件来处理Spark,但是我认为数据无法在Spark或Spark SQL中访问。

文件1 ../ conf / spark-defaults.conf

spark.driver.extraClassPath = /usr/share/java/mysql-connector-java.jar
spark.executor.extraClassPath = /usr/share/java/mysql-connector-java.jar

文件2 ../ conf / hive-site.xml

<configuration>
   <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://localhost:3306/DBNAME</value>
      <description>JDBC connect string for a JDBC metastore</description>
   </property>
   <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>com.mysql.jdbc.Driver</value>
      <description>Driver class name for a JDBC metastore</description>
   </property>
     <property>
      <name>javax.jdo.option.ConnectionUserName</name>
      <value>USERNAME</value>
      <description>username to use against metastore database</description>
   </property>
   <property>
      <name>javax.jdo.option.ConnectionPassword</name>
      <value>PASSWORD</value>
      <description>password to use against metastore database</description>
   </property>
</configuration>

3。。我了解了SQLAlchemy方言和PyHive。我搜索了超集代码,无法确定在哪里添加外部方言。

4。。我已经尝试了超集配置文件中的一些配置。我想知道端口是否应该是Spark端口。 SQLALCHEMY_DATABASE_URI ='hive:// localhost:4040 /'

5。。我尝试导入一个csv文件,但出现错误。

注意:如果我在scala提示符下输入了Mariadb数据,但我认为这不是正确的解决方案。

import org.apache.spark.sql.SQLContext
val sqlcontext = new org.apache.spark.sql.SQLContext(sc)
val dataframe_mysql = sqlcontext.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/DATABASE_NAME").option("driver", "com.mysql.jdbc.Driver").option("dbtable", "TABLE_NAME").option("user", "USER_NAME").option("password", "PASSWORD").load()
dataframe_mysql.show() 

谢谢

更新: 这不是理想的解决方案,但在此link阅读了解决方案后,我得以 pip3 install mysqlclient 正常工作。

sudo ln -s /usr/lib64/libmariadbclient.a /usr/lib64/libmariadb.a

我仍然想使用Spark。

1 个答案:

答案 0 :(得分:1)

我已经连接了具有超集的MariaDB作为我的主要BD而不是默认的SQLite,这可能会帮助您进行连接。

SQLAlchemist需要一个额外的python lib来完成此任务,就我而言,我使用了pymysql。 安装后(可以使用pip),连接将带有前缀 mysql + pymysql ,因此其外观如下:

'mysql+pymysql://user:password@host/dbname'

希望对您有帮助