2016-08-16 27 views
3

我想從本地磁盤中存儲的SQLLite .db文件加載表。 PySpark有沒有乾淨的方法來做到這一點?如何從PySpark的SQLLite db文件加載表?

目前,我正在使用的解決方案,但沒有作爲優雅。首先,我使用熊貓來閱讀表格,儘管sqlite3。一個問題是,在過程中架構信息沒有通過(可能會或可能不成問題)。我想知道是否有直接的方式來加載表而不使用熊貓。

import sqlite3 
import pandas as pd 

db_path = 'alocalfile.db' 
query = 'SELECT * from ATableToLoad' 

conn = sqlite3.connect(db_path) 
a_pandas_df = pd.read_sql_query(query, conn) 

a_spark_df = SQLContext.createDataFrame(a_pandas_df) 

似乎有一種方法使用jdbc來做到這一點,但我還沒有弄清楚如何在PySpark中使用它。

+0

什麼模式信息?你的意思是數據類型?不是說sqlite *真的*有他們... –

回答

1

首先,您需要啓動帶有JDBC驅動程序jar的pyspark,路徑爲 下載sqllite jdbc驅動程序並在下面提供jar路徑。 https://bitbucket.org/xerial/sqlite-jdbc/downloads/sqlite-jdbc-3.8.6.jar

pyspark --conf spark.executor.extraClassPath=<jdbc.jar> --driver-class-path <jdbc.jar> --jars <jdbc.jar> --master <master-URL> 

對於上述pyspark命令的交代,見下面張貼

Apache Spark : JDBC connection not working

現在,這裏是你會怎麼做: -

現在讀SQLite數據庫文件,只需將其讀入火花數據幀

df = sqlContext.read.format('jdbc').\ 
    options(url='jdbc:sqlite:Chinook_Sqlite.sqlite',\ 
    dbtable='employee',driver='org.sqlite.JDBC').load() 

df.printSchema()查看您的架構。

全碼: - https://github.com/charles2588/bluemixsparknotebooks/blob/master/Python/sqllite_jdbc_bluemix.ipynb

感謝, 查爾斯。