programing

Spark 경유로 Mariadb에 Apache Superset 연결

yoursource 2023. 1. 25. 08:56
반응형

Spark 경유로 Mariadb에 Apache Superset 연결

Superset의 Mariadb의 데이터를 보고 싶습니다.H2o 스파클링 워터에도 스파크를 사용할 예정이기 때문에 Mariadb --> Spark --> Superset에서 데이터를 얻는 것이 가장 좋은 솔루션이라고 생각합니다.

1. pip3 install mysqlclient를 시도했지만 다음 오류가 발생했습니다.

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

2. 2개의 Configuration파일로 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. SQLechemy 방언과 PyHive에 대해 읽었습니다.슈퍼셋 코드를 검색했지만 외부 사투리를 어디에 추가해야 할지 알 수 없습니다.

4. 슈퍼셋 구성 파일에서 몇 가지 구성을 시도했습니다.포트가 스파크 포트여야 하는지 궁금합니다.SQLALCHEMY_DATABASE_URI = 'syslog://localhost:4040/'

5. csv 파일을 Import하려고 했지만 오류가 발생했습니다.

메모: scala 프롬프트에서 입력하면 Spark에서 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() 

감사해요.

업데이트: 이상적인 솔루션은 아니지만 이 링크에서 솔루션을 읽은 후 pip3 install mysqlclient를 작동시킬 수 있었습니다.

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

나는 여전히 Spark를 사용하고 싶다.

기본 SQLite 대신 슈퍼셋을 메인 BD로 사용하여 MariaDB를 연결했습니다.이것이 연결에 도움이 될 것입니다.

SQLAlchemist는 이 작업을 위해 추가 python lib가 필요합니다.저의 경우는 pymysql을 사용했습니다.설치가 완료되면(pip을 사용할 수 있음) 접속은 프리픽스 mysql+pymysql로 이루어지기 때문에 다음과 같이 됩니다.

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

도움이 됐으면 좋겠다

언급URL : https://stackoverflow.com/questions/56814338/apache-superset-connection-to-mariadb-via-spark

반응형