Подключение Apache Superset к Mariadb через Spark - PullRequest
1 голос
/ 29 июня 2019

Я хотел бы просмотреть данные из Mariadb в Superset. Я думаю, что получение данных из Mariadb -> Spark -> Superset может быть лучшим решением, потому что я также буду использовать Spark с H2o Sparkling Water.

1. Я попытался pip3 установить mysqlclient , но получил эту ошибку:

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

2. Я пробовал Spark с 2 файлами конфигурации, но я не думаю, что данные доступны в 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. Я попробовал несколько конфигураций в файле конфигурации superset. Мне интересно, должен ли порт быть портом Spark. SQLALCHEMY_DATABASE_URI = 'куст: // localhost: 4040 /'

5. Я попытался импортировать CSV-файл, но получил ошибку.

ПРИМЕЧАНИЕ: Я могу увидеть данные Mariadb в Spark, если введу их в приглашении scala, но не думаю, что это правильное решение.

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() 

Спасибо

UPDATE: Это не идеальное решение, но я смог заставить pip3 установить mysqlclient работать после прочтения решения по этой ссылке .

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

Я все еще хотел бы использовать Spark.

1 Ответ

1 голос
/ 08 июля 2019

Я подключил MariaDB с надмножеством в качестве основного BD вместо стандартного SQLite, возможно, это поможет вам подключиться.

SQLAlchemist для этой задачи требуется дополнительная библиотека python, в моем случае я использовал pymysql,После установки (вы можете использовать pip) соединение будет с префиксом mysql + pymysql , поэтому оно будет выглядеть так:

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

Надеюсь, оно вам поможет

...