我正在尝试在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
^
答案 0 :(得分:28)
Spark上下文可用作'sc'(master = local [*],app id = 当地1490337421381)。
Spark会话可用作'spark'。
在Spark 2.0.x中,Spark的入口点是SparkSession,它在Spark shell中以spark
的形式提供,所以请尝试这样:
spark.sqlContext.sql(...)
您也可以像这样创建Spark上下文
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
我选择第一个选项,因为Spark shell已经为你创建了一个,所以请使用它。
答案 1 :(得分:1)
如果您使用Cloudera并遇到此问题,此Github票证的解决方案适用于我(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的用户创建用户主目录。这为我修好了。
答案 2 :(得分:0)
由于您使用的是Spark 2.1,因此您必须使用SparkSession
对象。您可以从SparkContext
对象
SparkSession
的引用
var sSession = org.apache.spark.sql.SparkSession.getOrCreate();
var sContext = sSession.sparkContext;