2016-08-16 1 views
3

로컬 디스크에 저장된 SQLLite .db 파일에서 테이블을로드하려고합니다. PySpark에서이 작업을 수행 할 수있는 명확한 방법이 있습니까?PySpark에서 SQLLite db 파일의 테이블을로드하는 방법은 무엇입니까?

현재 저는 작동하지만 우아하지는 않지만 해결책을 사용하고 있습니다. 먼저 sqlite3을 사용하여 pandas를 사용하여 테이블을 읽었습니다. 한가지 우려 사항은 프로세스 동안 스키마 정보가 전달되지 않는다는 것입니다 (문제 일 수도 있고 아닐 수도 있음). 팬더를 사용하지 않고 테이블을로드하는 직접적인 방법이 있는지 궁금합니다.

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 명령의 explaination를 들어 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

감사합니다, 찰스.

관련 문제