sparkSQL 访问HDFS on jupyter notebook

在jupyter notebook 交互式界面中,使用sparksql  访问hdfs的数据,并转换为临时视图,通过sql进行查询。在此过程中遇到的问题。
源码如下:
from pyspark.sql import SparkSession
try:
    sc.stop()  
except:
    pass
spk = SparkSession.builder.master("spark://192.168.12.7:7077").appName("spark1").getOrCreate()
print(spk)
sc11=spk.sparkContext
print(sc11)
df = spk.read.json("hdfs://192.168.12.7:8020/user/hadoop/example/src/main/resources/people.json")
df.show()
df.createOrReplaceTempView("people1")
sqldf=spk.sql("select * from people1 where age > 20")
sqldf.show()
1.让提交的代码在spark集群中运行
  在起初没有调用 sc.stop()代码块时,也能够正常输出结果,但spark context的输出表明,代码是在本地运行而非预想中的spark集群,在spark集群的webui界面中也看不到对应的应用。
   <pyspark.sql.session.SparkSession object at 0x7fdc774e9b38>
  <SparkContext master=local[*] appName=PySparkShell>
 原因: jupyter notebook在启动时,默认会调用一个本地的shell。如果需要建立到spark集群的shell,需要关闭sc,然后重建会话。

2. hdfs访问
   hdfs文件的访问,可以通过hdfs dfs -ls   / 命令查看对应的文件。
3. metastore_db的问题
  官方文档中, dataframe在存储永久表时会使用内嵌的derby数据库。由于我没有安装hive,因此很多文档中所说的mysql替代derby数据库也无法成立(?)。
  根据网上的介绍的方法采用了简单粗暴的方式: 将SPARK_HOME/bin/下的metastore_db 删除,在启动kernel时系统会自动重建。
 
 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值