2017-12-16 1 views
1

URL에있는 CSV를 Pyspark의 데이터 프레임으로 디스크에 쓰지 않고 어떻게 읽을 수 있습니까?디스크에 쓰지 않고 데이터 프레임에 URL에 pyspark csv를 보냅니다.

는 I는 운없이 다음 시도했다 :

import urllib.request 
from io import StringIO 

url = "https://raw.githubusercontent.com/pandas-dev/pandas/master/pandas/tests/data/iris.csv" 
response = urllib.request.urlopen(url) 
data = response.read()  
text = data.decode('utf-8') 


f = StringIO(text) 

df1 = sqlContext.read.csv(f, header = True, schema=customSchema) 
df1.show() 

답변

2

TL; DR driver를 통해 데이터를 전송하는 데드 엔드이다 가능하고 일반적 아니다.

  • Spark 2.3 전에는 csv 독자는 URI에서만 읽을 수 있으며 http는 지원되지 않습니다.

    spark.read.csv(sc.parallelize(text.splitlines())) 
    

    을하지만, 데이터는 디스크에 기록 될 것입니다 :

  • 스파크 2.3에서는 RDD을 사용합니다.

  • 당신은 할 수 팬더에서 createDataFrame : 파일이 작은 경우

    spark.createDataFrame(pd.read_csv(url))) 
    

    그러나 이것은 다시 한 번 디스크에 기록

난 그냥 sparkFiles 사용하십시오 :

from pyspark import SparkFiles 

spark.sparkContext.addFile(url) 

spark.read.csv(SparkFiles.get("iris.csv"), header=True)) 
+0

슈퍼 도움, 고마워! – RobinL

관련 문제