python使用spark sql查询impala_如何使用JDBC将Impala表直接加载到Spark?
我正在嘗試使用
Python編寫一個spark作業,它將打開與Impala的jdbc連接,并將Impala直接從Impala加載到Dataframe中.這個問題非常接近,但在scala中:
Calling JDBC to impala/hive from within a spark job and creating a table
我該怎么做呢?其他數據源有很多例子,例如MySQL,PostgreSQL等,但我還沒有看到一個用于Impala Python Kerberos的數據源.一個例子會有很大的幫助.謝謝!
嘗試使用來自網絡的信息,但它沒有用.
SPARK筆記本
#!/bin/bash
export PYSPARK_PYTHON=/home/anave/anaconda2/bin/python
export HADOOP_CONF_DIR=/etc/hive/conf
export PYSPARK_DRIVER_PYTHON=/home/anave/anaconda2/bin/ipython
export PYSPARK_DRIVER_PYTHON_OPTS='notebook --ip=* --no-browser'
# use Java8
export JAVA_HOME=/usr/java/latest
export PATH=$JAVA_HOME/bin:$PATH
# JDBC Drivers for Impala
export CLASSPATH=/home/anave/impala_jdbc_2.5.30.1049/Cloudera_ImpalaJDBC41_2.5.30/*.jar:$CLASSPATH
export JDBC_PATH=/home/anave/impala_jdbc_2.5.30.1049/Cloudera_ImpalaJDBC41_2.5.30
# --jars $SRCDIR/spark-csv-assembly-1.4.0-SNAPSHOT.jar \
# --conf spark.sql.parquet.binaryAsString=true \
# --conf spark.sql.hive.convertMetastoreParquet=false
pyspark --master yarn-client \
--driver-memory 4G \
--executor-memory 2G \
# --num-executors 10 \
--jars /home/anave/spark-csv_2.11-1.4.0.jar $JDBC_PATH/*.jar
--driver-class-path $JDBC_PATH/*.jar
Python代碼
properties = {
"driver": "com.cloudera.impala.jdbc41.Driver",
"AuthMech": "1",
# "KrbRealm": "EXAMPLE.COM",
# "KrbHostFQDN": "impala.example.com",
"KrbServiceName": "impala"
}
# imp_env is the hostname of the db, works with other impala queries ran inside python
url = "jdbc:impala:imp_env;auth=noSasl"
db_df = sqlContext.read.jdbc(url=url, table='summary', properties=properties)
我收到此錯誤消息(Full Error Log):
Py4JJavaError:調用o42.jdbc時發生錯誤.
:java.lang.ClassNotFoundException:com.cloudera.impala.jdbc41.Driver
最佳答案 您可以使用
--jars $(echo /dir/of/jars/*.jar | tr ' ' ',')
代替
--jars /home/anave/spark-csv_2.11-1.4.0.jar $JDBC_PATH/*.jar
或者對于另一種方法,請參閱我的answer
總結
以上是生活随笔為你收集整理的python使用spark sql查询impala_如何使用JDBC将Impala表直接加载到Spark?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 视图添加字段_Odoo开发教程2-为模型
- 下一篇: opencv python安装linux