我试图使用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无法启动。
答案 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对象。