Scala 在spark 1.6中读取csv作为数据帧

Scala 在spark 1.6中读取csv作为数据帧,scala,apache-spark,Scala,Apache Spark,我使用了Spark 1.6并尝试将csv(或tsv)文件作为数据帧读取。 以下是我采取的步骤: scala> val sqlContext= new org.apache.spark.sql.SQLContext(sc) scala> import sqlContext.implicits._ scala> val df = sqlContext.read scala> .format("com.databricks.spark.csv") scala> .opt

我使用了Spark 1.6并尝试将csv(或tsv)文件作为数据帧读取。 以下是我采取的步骤:

scala>  val sqlContext= new org.apache.spark.sql.SQLContext(sc)
scala> import sqlContext.implicits._
scala> val df = sqlContext.read
scala> .format("com.databricks.spark.csv")
scala> .option("header", "true")
scala.option("inferSchema", "true")
scala> .load("data.csv")
scala> df.show()
错误:

<console>:35: error: value show is not a member of org.apache.spark.sql.DataFrameReader df.show()
:35:错误:value show不是org.apache.spark.sql.DataFrameReader df.show()的成员

最后一个命令应该显示数据帧的前几行,但我得到了错误消息。任何帮助都将不胜感激。

看起来您的函数没有正确地链接在一起,它试图在val df上运行“show()”,val df是对DataFrameReader类的引用。 如果我运行以下命令,我可以重现您的错误:

val df = sqlContext.read
df.show()
如果重新构造代码,它将起作用:

val df = sqlContext.read.format("com.databricks.spark.csv").option("header", "true").option("inferSchema", "true").load("data.csv")
df.show()

在java中,首先在POM.xml文件中添加依赖项,然后运行以下代码来读取csv文件

<dependency>
            <groupId>com.databricks</groupId>
            <artifactId>spark-csv_2.10</artifactId>
            <version>1.4.0</version>
        </dependency>

Dataset<Row> df = sparkSession.read().format("com.databricks.spark.csv").option`enter code here`("header", true).option("inferSchema", true).load("hdfs://localhost:9000/usr/local/hadoop_data/loan_100.csv");

com.databricks
spark-csv_2.10
1.4.0
Dataset df=sparkSession.read().format(“com.databricks.spark.csv”)。选项“在此处输入代码”(“header”,true)。选项(“推断模式”,true)。加载(“hdfs://localhost:9000/usr/local/hadoop_data/loan_100.csv");

改用以下方法:

val sqlContext = new SQLContext(sc);

它应该可以解决您的问题。

您只需复制/粘贴spark csv的示例就是shell,而不必试图了解它是如何工作的。谢谢!我试过了,但是现在我收到了错误消息:“java.lang.ClassNotFoundException:找不到数据源:com.databricks.spark.csv”。如果您在本地尝试此操作,则需要将SparkCSV jar添加到类路径中。您可以按照此处的说明启动shell并将jar拉入您的环境:$SPARK\u HOME/bin/SPARK shell--packages com.databricks:SPARK-csv\u 2.10:1.4.0谢谢大家!它现在可以工作了,创建的数据帧有一个额外的第一行(C0,C1,C2,…)作为列标题!实际列标题被视为数据的第一行。我如何解决这个问题?它在cloudera中不起作用@user2145299您是如何解决的?@SiddheshKalgaonkar取决于Spark版本,如果比Spark 2.0旧,您需要下载并使用上面提到的Spark csv包。如果使用较新版本(Spark 2.x+),则默认情况下应包括该版本。