提问者:小点点

无法在SPARK2.2中使用SQLContext对象创建dataframe


我在Microsoft Windows7上使用的是Spark2.2版本。我想在一个变量中加载csv文件,以便稍后执行与SQL相关的操作,但无法这样做。我从这个链接引用了公认的答案,但没有用。我按照以下步骤创建sparkcontext对象和sqlcontext对象:

import org.apache.spark.SparkContext  
import org.apache.spark.SparkConf  
val sc=SparkContext.getOrCreate() // Creating spark context object 
val sqlContext = new org.apache.spark.sql.SQLContext(sc) // Creating SQL object for query related tasks  
val df = sqlContext.read.format("csv").option("header", "true").load("D://ResourceData.csv")  

当我尝试df.show(2)时,它会说没有找到df。我尝试了从附加链接加载CSV的databricks解决方案。它下载软件包,但不加载csv文件。那么我怎样才能纠正我的问题呢?提前致谢:)


共1个答案

匿名用户

我使用Cloudera VM中的1.6版本解决了在dataframe中加载本地文件的问题,下面的代码帮助了我:

1) sudo spark-shell --jars /usr/lib/spark/lib/spark-csv_2.10-1.5.0.jar,/usr/lib/spark/lib/commons-csv-1.5.jar,/usr/lib/spark/lib/univocity-parsers-1.5.1.jar  

2) val df1 = sqlContext.read.format("com.databricks.spark.csv").option("header", "true").option("treatEmptyValuesAsNulls", "true" ).option("parserLib", "univocity").load("file:///home/cloudera/Desktop/ResourceData.csv")

注意:scsqlcontext变量是自动创建的,但是在最新版本即2.2.1中有许多改进,我无法使用,因为在Windows7中没有创建metastore_db。我将发布一个关于同样问题的新问题。