加载本地文件时spark_session和sqlContext之间的区别

时间:2018-11-28 10:19:56

标签: apache-spark pyspark

我试图使用spark_session和sqlContext将本地文件作为数据帧加载。

df = spark_session.read...load(localpath) 

它无法读取本地文件。 df为空。 但是,从spark_context创建sqlcontext之后,它可以加载本地文件。

sqlContext = SQLContext(spark_context)
df = sqlContext.read...load(localpath)

效果很好。但是我不明白为什么。是什么原因?

环境:Windows10,spark 2.2.1

编辑

最后,我已经解决了这个问题。根本原因是安装了pip的PySpark和安装在本地文件系统中的PySpark之间的版本差异。由于py4j失败,PySpark无法启动。

1 个答案:

答案 0 :(得分:1)

我粘贴的示例代码可能会有所帮助。我们已经使用它来创建一个Sparksession对象,并使用它读取本地文件:

import org.apache.spark.sql.SparkSession

object SetTopBox_KPI1_1 {

  def main(args: Array[String]): Unit = {
    if(args.length < 2) {
      System.err.println("SetTopBox Data Analysis <Input-File> OR <Output-File> is missing")
      System.exit(1)
    }

    val spark = SparkSession.builder().appName("KPI1_1").getOrCreate()

    val record = spark.read.textFile(args(0)).rdd

.....

总体而言,在Spark 2.2中,使用Spark的首选方法是创建一个SparkSession对象。