如何将具有大量列数的csv文件导入Apache Spark 2.0

mob*_*cdi 4 csv apache-spark pyspark apache-spark-mllib google-cloud-dataproc

我遇到了将多个小型csv文件导入250000 columns of float64到作为Google Dataproc集群运行的Apache Spark 2.0中的问题.有一些字符串列,但只对1作为类标签真正感兴趣.

当我在pyspark中运行以下内容时

csvdata = spark.read.csv("gs://[bucket]/csv/*.csv", header=True,mode="DROPMALFORMED")
Run Code Online (Sandbox Code Playgroud)

我得到了

get_return_value文件中的"/usr/lib/spark/python/lib/py4j-0.10.1-src.zip/py4j/protocol.py",第312行py4j.protocol.Py4JJavaError:调用o53.csv时发生错误.:com.univocity.parsers.common.TextParsingException:java.lang.ArrayIndexOutOfBoundsException - 20480 提示:处理可能已超过20480列的极限列数.使用settings.setMaxColumns(int)定义输入可以拥有的最大列数 确保配置正确,分隔符,引号和转义序列与您尝试解析的输入格式匹配解析器配置:CsvParserSettings:

  1. 在哪里/如何设置解析器的最大列以使用数据进行机器学习.
  2. 有没有更好的方法来摄取数据以用于Apache mllib?

这个问题指向定义要使用的数据帧的类,但是可以定义这么大的类而不必创建210,000个条目吗?

小智 12

用途option:

spark.read.option("maxColumns", n).csv(...)
Run Code Online (Sandbox Code Playgroud)

n列数在哪里.