我想在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。
答案 0 :(得分:1)
我已经连接了具有超集的MariaDB作为我的主要BD而不是默认的SQLite,这可能会帮助您进行连接。
SQLAlchemist需要一个额外的python lib来完成此任务,就我而言,我使用了pymysql。 安装后(可以使用pip),连接将带有前缀 mysql + pymysql ,因此其外观如下:
'mysql+pymysql://user:password@host/dbname'
希望对您有帮助