使用pyspark函数无效的Custome分隔符文件上传

时间:2016-08-17 15:25:56

标签: python apache-spark pyspark azure-storage spark-dataframe

我使用以下功能上传自定义分隔符文件。

from pyspark.sql.types import *
from pyspark.sql import *
 

def loadFile(path, rowDelimeter, columnDelimeter, firstHeaderColName):
 

    loadedFile = sc.newAPIHadoopFile(path, "org.apache.hadoop.mapreduce.lib.input.TextInputFormat",
                                      "org.apache.hadoop.io.LongWritable", "org.apache.hadoop.io.Text",
                                      conf={"textinputformat.record.delimiter": rowDelimeter})
 
 
    rddData = loadedFile.map(lambda l:l[1].split(columnDelimeter)).filter(lambda f: f[0] != firstHeaderColName)
        
    return rddData

我调用了下面的函数。

from pyspark.sql.types import *
from pyspark.sql import *

Schema = StructType([
        StructField("FlightID", StringType(), True),
	StructField("Flightname", StringType(), True),
	StructField("FlightNo", StringType(), True),
	StructField("Depaturetime", StringType(), True),
	StructField("ArrivalTime", StringType(), True),
	StructField("FromPlace", StringType(), True),
	StructField("ToPlace", StringType(), True),
	StructField("Cremember", StringType(), True)
	
	
        
        

])

Data= loadFile("wasb://Accountnumber@serviceaccount.blob.core.windows.net/Flightdetails.txt",
                     "\r\n","#|#","FlightID")
                     
FlightDF = sqlContext.createDataFrame(Data,Schema )
FlightDF.write.saveAsTable("Flightdetail")

源文件大小为2GB,进程继续运行。表不是在Azure中创建的。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

建议尝试使用较小的数据集或几行。 2 GB数据文件可能有一些数据异常,可能导致此问题。