spark-shell用户
spark-shell只能spark用户来进行初始化,如果用hdfs或者root将会卡在spark-shell的初始化那个地方。可以用这两个用户来验证spark安装时成功地;但是如果想要通过shell来执行code、command,那么还是要用spark用户。
但是如果spark是standalone的安装模式,那么可以不考虑以上的权限问题(权限很多限制来自于YARN),即使root用户,也可以进入到命令行模式
spark读取文件的分布性质
我才用的val employee = sqlContext.read.json("file:///opt/hdpconfig.txt")经常会爆出来文件不存在,让我甚是困惑,后来想明白了,因为sparkContext告知YARN去做加载这件事情,YARN不一定分派到了那台机器的,所以如果没有在当前的机器上面,就会告知文件不存在,如果2/3概率分配到了65/68两台机器,那么就可以,如果分配到了70机器,文件就不存在。
所以大数据技术读取文件信息,file:///这种形式慎用,最好导入到hdfs中,通过hdfs://这种形式来进行处理。
spark写文件
1 scala> val sqlContext = new org.apache.spark.sql.SQLContext(sc) 2 sqlContext: org.apache.spark.sql.SQLContext = org.apache.spark.sql.SQLContext@4cc69f5c 3 scala> val employee = sqlContext.read.json("/data/employee.json") 4 employee: org.apache.spark.sql.DataFrame = [address: string, id: string, name: string, sexural: string] 5 scala> employee.write.parquet("/data/parquet/employee.parquet")
PS:路径没有特别指示,就是指hdfs路径。