2017-02-09 6 views
0

S3には420行と54000列のCSVファイルがあります。私は、SparkのデータフレームにCSVをロードしようとしています:小さいCSVファイルで問題はないPySpark sqlContext.read.load ArrayIndexOutofBoundsエラー

com.univocity.parsers.common.TextParsingException: java.lang.ArrayIndexOutOfBoundsException - 20480

genoExp = sqlContext.read.load("/mnt/%s/RNA-Seq/GSE10846_Gene_Expression_Data.csv" %MOUNT_NAME, format='com.databricks.spark.csv', header='true', inferSchema = 'true') 

これはエラーを返します。

答えて

1

20480列の数のデフォルトの制限値であるが、maxColumnsオプション使用して増やすことができます:それは使用するためにあまり意味がありません。実際には

import pandas as pd 
import numpy as np 
import tempfile 

np.random.seed(1) 

(pd 
    .DataFrame(np.random.randint(0, 100, (1, 30000))) 
    .to_csv(path, header=True, index=False)) 

df = spark.read.option("maxColumns", "54000").csv(path, header=True) 

df.columns[:4] 
['0', '1', '2', '3'] 
df.select(df.columns[:4]).show() 
+---+---+---+---+ 
| 0| 1| 2| 3| 
+---+---+---+---+ 
| 37| 12| 72| 9| 
+---+---+---+---+ 

をこのような短いデータと広いデータのためのSpark(特に投影プッシュダウンをサポートしていないソースを持つSpark SQL)。あなたは、しかし、より低いレベルのAPIで少し良いことができます。