2016-08-16 7 views
3

ローカルディスクに格納されたSQLLite .dbファイルからテーブルをロードしようとしています。 PySparkでこれを行うきれいな方法はありますか?PySparkからSQLLite dbファイルからテーブルをロードするには?

現在、私はうまく機能しますが、エレガントではないソリューションを使用しています。最初に、sqlite3を使ってpandasを使ってテーブルを読みました。問題の1つは、プロセス中にスキーマ情報が渡されないこと(問題の可能性もありますが、問題ではない可能性があります)です。私はパンダを使わずにテーブルをロードする直接的な方法があるかどうか疑問に思っています。

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パスを指定します。上記pysparkコマンドの、について説明するため 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> 

、今ここにポストの下

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

おかげで、 チャールズ。

関連する問題