Scala 在spark中加载CSV
我正在尝试使用SparkML和Scala进行Kaggle。我试图加载第一个培训文件,但遇到了一个奇怪的错误:Scala 在spark中加载CSV,scala,apache-spark,apache-spark-ml,kaggle,Scala,Apache Spark,Apache Spark Ml,Kaggle,我正在尝试使用SparkML和Scala进行Kaggle。我试图加载第一个培训文件,但遇到了一个奇怪的错误: java.io.IOException: Could not read footer: java.lang.RuntimeException: file:/Users/jake/Development/titanicExample/src/main/resources/data/titanic/train.csv is not a Parquet file. expected magic
java.io.IOException: Could not read footer: java.lang.RuntimeException: file:/Users/jake/Development/titanicExample/src/main/resources/data/titanic/train.csv is not a Parquet file. expected magic number at tail [80, 65, 82, 49] but found [44, 81, 13, 10]
该文件是一个.csv
,因此我不确定为什么它需要一个拼花文件
这是我的密码:
object App {
val spark = SparkSession
.builder()
.master("local[*]")
.appName("liveOrDie")
.getOrCreate()
def main(args: Array[String]) {
val rawTrainingData = spark.read
.option("header", "true")
.option("delimiter", ",")
.option("inferSchema", "true")
.load("src/main/resources/data/titanic/train.csv")
// rawTrainingData.show()
}
}
您缺少输入格式。要么:
val rawTrainingData = spark.read
.option("header", "true")
.option("delimiter", ",")
.option("inferSchema", "true")
.csv("src/main/resources/data/titanic/train.csv")
或
您缺少输入格式。要么:
val rawTrainingData = spark.read
.option("header", "true")
.option("delimiter", ",")
.option("inferSchema", "true")
.csv("src/main/resources/data/titanic/train.csv")
或
它需要一个拼花文件,因为这是
如果您使用的是Spark<2.0,则需要使用。否则,如果您使用的是Spark 2.0+,则可以通过使用
.csv(..fname..)
而不是.load(..fname..)
来使用,因为它需要一个拼花文件,因为这是
如果您使用的是Spark<2.0,则需要使用。否则,如果您使用的是Spark 2.0+,您将能够通过使用
.csv(..fname..)
而不是.load(..fname..)
来使用。我的pom.xml
中的Scala版本似乎与我的原始代码有冲突。我的pom.xml
有多个Scala版本,似乎导致了一些问题。我使用动态属性2.11
将使用Scala的所有依赖项更新为同一版本,并修复了问题。我的pom.xml
中似乎与Scala版本有冲突,而不是我的原始代码。我的pom.xml
有多个Scala版本,似乎导致了一些问题。我使用动态属性2.11
将所有使用Scala的依赖项更新为同一版本,解决了这个问题。您必须将databricks中的依赖项jar添加到pom中。较低版本的spark不提供读取csv的api。下载后,您可以编写如下内容
val df = sqlContext.read
.format("com.databricks.spark.csv")
.option("header", "true")
// Use first line of all files as header
.option("inferSchema", "true")
// Automatically infer data types
.load("cars.csv")
Ref url:您必须将databricks中的依赖项jar添加到pom中。较低版本的spark不提供读取csv的api。下载后,您可以编写如下内容
val df = sqlContext.read
.format("com.databricks.spark.csv")
.option("header", "true")
// Use first line of all files as header
.option("inferSchema", "true")
// Automatically infer data types
.load("cars.csv")
参考url:是的,我在输入问题后就注意到了这一点。我添加了一行
.format(“com.databricks.spark.csv”)
,但这并没有起作用。我也尝试了你的两种解决方案,但都没有成功。是的,在我输入问题后我注意到了这一点。我添加了一行.format(“com.databricks.spark.csv”)
,但这并没有起作用。我也尝试了你的两种解决方案,但都不奏效。我已经有了。事实上,现在我已经让它工作了,我可以注释掉Databricks依赖项,程序仍然可以工作。我应该注意到我使用的是Spark 2.0。这太棒了,谢谢你让我知道Spark 2.0的支持。我已经在那里了。事实上,现在我已经让它工作了,我可以注释掉Databricks依赖项,程序仍然可以工作。我应该注意到我正在使用Spark 2.0。这太棒了,谢谢你让我知道Spark 2.0的支持。这不是我的建议,您编写的代码没有任何意义,因为load
不会返回DataFrameReader
无论如何,我会删除针对我的注释,然后接受此作为答案,以便其他用户可以从您的经验中学习。此外,修复依赖性问题允许您在原始问题中编写的代码正常工作或被删除这是其他解决方案之一吗?请描述a)需要修复的内容和b)您现在用于加载CSV的代码。这不是我的建议,您编写的代码没有任何意义,因为load
不会返回DataFrameReader
无论如何,我会删除针对我的注释,然后接受此作为答案,以便其他用户可以从您的经验中学习。此外,修复依赖性问题允许您在原始问题中编写的代码正常工作或被删除这是其他解决方案之一吗?请描述a)需要修复的内容和b)您现在用于加载CSV的代码。