Spark在Windows本地读取Hdfs上的文件
程序员文章站
2022-03-08 14:25:04
...
今天搞了好几个小时做测试,在IDEA中去操作集群中的spark,可是集群一直链接不上,一下是解决问题的方案
需要满足的条件:
(1)需要访问hdfs的路径:即可以配置core-site.xml,hdfs-site.xml文件
(2)设置访问hdfs上的用户: System.setProperty(“HADOOP_USER_NAME”,“hdfs”)
(3)Spark程序中的Master设置在本地即:local
条件(1)的core-site.xml文件和hdfs-site.xml文件需要放在项目工程IDEA的resources目录下,如果没有resources目录,那么需要在IDEA的main目录上新建一个resources目录,如下图:
然后代码如下:
object Spark_create {
def main(args: Array[String]): Unit = {
//1 创建配置文件对象
val conf: SparkConf = new SparkConf().setAppName("rdd_create").setMaster("local[*]")
//创建sparkcontext上下文
val sc: SparkContext = new SparkContext(conf)
System.setProperty("HADOOP_USER_NAME","hdfs")
//设置日志的级别
sc.setLogLevel("WARN")
//获取数据源(本地或者hdfs)
val rdd = sc.textFile("hdfs://HadoopNode1:8020/user/sheng/input/hello.txt")
//这种方式也可以:hdfs://clusterldg:8020/user/sheng/input/hello.txt
//hdfs://localhost:54310/data/in/log
//flatMap(_.split(" ")):压平操作,按照空格分割符将一行数据映射成一个个单词;
val rdd1=rdd.flatMap(_.split(" "))
//map((_,1)):对每一个元素操作,将单词映射为元组;
val rdd2=rdd1.map((_,1))
//reduceByKey(_+_):按照key将值进行聚合,相加;
val rdd3=rdd2.reduceByKey(_+_)
//数据收集,真正的执行
val p = rdd3.collect()
print(p.toBuffer)
sc.stop()
}
}
上一篇: 关于HTTPS一篇文章就够了
下一篇: FusionInsight
推荐阅读