2017-04-05 47 views
0

我已經輸入CSV文件,如下閱讀CSV與字符串文件到RDD火花

123,john,ny,"new-emp-in" 
111,rock,sf,"recently,promoted" 
100,smith,la,"10.101.0129-name,string" 

,所以我怎麼能閱讀和創建RDD?
com.databricks:spark-csv_2.11:1.5.0支持這個,但我不能使用它。

+0

什麼火花版本您使用的? 'val df = spark.read.option(「header」,false).option(「inferSchema」,true).csv(「*。csv」)'適用於我的spark 2.0.2。 – Psidom

+0

是的,但我使用1.x :( – user491

+2

除了認真考慮升級到spark2.x,如果你真的不能使用databrick的csv包(出於神祕的原因!),最簡單的方法是使用'textFile'方法來讀取文件,並使用正則表達式來查找引號之間包含逗號的列/數據,並將其替換爲其他內容。因此,這是基本的數據準備操作,一旦完成了這些操作,就可以使用簡單的'rdd.map(lambda行:row.split(「,」))'操作,使每行作爲逗號分隔列表 – Pushkr

回答

1

在spark 2.0+中,您可以使用SparkSession.read方法讀取多種格式,其中之一是csv。使用這種方法,你可以做到以下幾點:

df = spark.read.csv(filename) 

或爲RDD剛:

rdd = spark.read.csv(filename).rdd 

更新

在看到您的評論看一看CSV Data Source for Apache Spark 1.x。我相信這是導致Spark 2.0中包含讀取方法的一部分。

0

使用舊版本的Spark,您無法直接讀取csv。但是你可以包含Databrick的csv jar並使用他們的Python API來實現。

from pyspark.sql import SQLContext 
sqlContext = SQLContext(sc) 

df = sqlContext.read.format('com.databricks.spark.csv').options(header='true', 
    inferschema='true').load('cars.csv') 
df.select('year', 
    'model').write.format('com.databricks.spark.csv').save('newcars.csv') 

參考:https://github.com/databricks/spark-csv#python-api

+0

這個有用嗎?您有任何後續問題嗎? – alpeshpandya