我遇到了一个问题,需要将多个小 csv 文件导入包含 250,000 列 float64 的 Apache Spark 2.0 中。我正在使用 Google Dataproc 集群。有几列是字符串,但我只关心其中的一列作为类标签。
在 pyspark 中运行以下代码:
在 pyspark 中运行以下代码:
csvdata = spark.read.csv("gs://[bucket]/csv/*.csv", header=True,mode="DROPMALFORMED")
我遇到了一个问题:
文件 "/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:
- 我应该在哪里/如何为解析器设置最大列数,以便能够使用机器学习数据。
- 有没有更好的方法来将数据摄入 Apache mllib?
这个问题提到了为 dataframe 定义一个类来使用,但是是否可能定义一个如此庞大的类而不必创建 21 万个条目?
在HIVE_HOME或HIVE_CONF_DIR中找不到ivysettings.xml文件,将使用/etc/hive/conf.dist/ivysettings.xml
。数据已经被导入,但是根据df.printSchema()
,float64被检测为字符串。 - mobcdi