scala Apache spark错误:未找到:值sqlContext

woobm2wo  于 2023-06-23  发布在  Scala
关注(0)|答案(6)|浏览(175)

我正在尝试在Windows 10中设置Spark。最初,我在启动时遇到了this error,链接中的解决方案帮助了我。现在我仍然无法运行import sqlContext.sql,因为它仍然会抛出错误

----------------------------------------------------------------
Fri Mar 24 12:07:05 IST 2017:
Booting Derby version The Apache Software Foundation - Apache Derby - 10.12.1.1 - (1704137): instance a816c00e-015a-ff08-6530-00000ac1cba8
on database directory C:\metastore_db with class loader org.apache.spark.sql.hive.client.IsolatedClientLoader$$anon$1@37606fee
Loaded from file:/F:/Soft/spark/spark-2.1.0-bin-hadoop2.7/bin/../jars/derby-10.12.1.1.jar
java.vendor=Oracle Corporation
java.runtime.version=1.8.0_101-b13
user.dir=C:\
os.name=Windows 10
os.arch=amd64
os.version=10.0
derby.system.home=null
Database Class Loader started - derby.database.classpath=''
17/03/24 12:07:09 WARN ObjectStore: Failed to get database global_temp, returning NoSuchObjectException
Spark context Web UI available at http://10.128.18.22:4040
Spark context available as 'sc' (master = local[*], app id = local-1490337421381).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.1.0
      /_/

Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_101)
Type in expressions to have them evaluated.
Type :help for more information.

scala> import sqlContext.sql
<console>:23: error: not found: value sqlContext
       import sqlContext.sql
              ^
0yg35tkg

0yg35tkg1#

Spark上下文可用为'sc'(master = local[*],app id = local-1490337421381)。
Spark会话可用作“spark”。
在Spark 2.0.x中,Spark的入口点是SparkSession,在Spark shell中可以使用spark,所以可以这样尝试:

spark.sqlContext.sql(...)

您也可以像这样创建Spark Context

val sqlContext = new org.apache.spark.sql.SQLContext(sc)

第一个选项是我的选择,因为Spark shell已经为您创建了一个,所以请使用它。

t5zmwmid

t5zmwmid2#

由于您使用的是Spark 2.1,因此必须使用SparkSession对象。您可以从SparkSession对象获取对SparkContext的引用

var sSession = org.apache.spark.sql.SparkSession.getOrCreate();
var sContext = sSession.sparkContext;
gr8qqesn

gr8qqesn3#

如果你在Cloudera上遇到了这个问题,这个Github ticket的解决方案对我很有效(https://github.com/cloudera/clusterdock/issues/30):
root用户(启动spark-shell时的运行身份)在HDFS中没有用户目录。如果您创建了一个(sudo -u hdfs hdfs dfs -mkdir /user/root后跟sudo -u hdfs dfs -chown root:root /user/root),则应修复此问题。
即为运行spark-shell的用户创建一个用户主目录。这帮我搞定了。

kadbb459

kadbb4594#

别忘了导入上下文!

import org.apache.spark.sql.{SparkSession, types}
wfveoks0

wfveoks05#

您必须创建sqlContext才能访问它以执行SQL语句。在Spark 2.0中,您可以使用SparkSession轻松创建SQLContext,如下所示。

val sqlContext = spark.sqlContext
sqlContext.sql("SELECT * FROM sometable")

或者,您也可以使用如下所示的SparkSession执行SQL语句。

spark.sql("SELECT * FROM sometable")
w6lpcovy

w6lpcovy6#

第一个选项是我的选择,因为Spark shell已经为您创建了一个,所以请使用它。

相关问题