如何使用spark添加hdfs数据

hzbexzde  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(397)

我是新的Spark和希望添加hdfs数据使用Spark。假设我在bash中做了类似的事情,但是如果数据很大,则需要花费时间,因此希望使用相同的spark。如:

year=2016

for((month=1;month<10;month++)) 
do 
    tot1=$(hadoop fs -du -s /inputdata1/year=$year/month=0$month | awk '{SUM += $1} END {print SUM/(1024*1024*1024*1024)}') 

    tot2=$(hadoop fs -du -s /inputdata2/year=$year/month=0$month | awk '{SUM += $1} END {print SUM/(1024*1024*1024*1024)}') 

    tot3=$(hadoop fs -du -s /inputdata3/year=$year/month=0$month | awk '{SUM += $1} END {print SUM/(1024*1024*1024*1024)}') 

    tot4=$(hadoop fs -du -s /inputdata4/year=$year/month=0$month | awk '{SUM += $1} END {print SUM/(1024*1024*1024*1024)}') 

    tot=$(echo $tot1+$tot2+$tot3+$tot4|bc)

        printf 'Total Data in month %d\t%.2f \n' "$month" "$tot"

done
p5fdfcr1

p5fdfcr11#

从查看sparkcontext的SparkAPI文档开始。
如果你想做的只是计算一个目录中的文件数,那么我认为这应该是可行的。。。

val conf = new SparkConf().setAppName("MyFirstSparkJob")
val sc = new SparkContext(conf)
val count1 = sc.wholeTextFiles("hdfs://inputdata1/*").count

…请注意 sc.wholeTextFiles 返回一个 RDD[String, String] 其中每对都有一个表单(文件名、文件内容)。从这里我们可以做很多事情来分析数据 file-contents .

rqcrx0a6

rqcrx0a62#

请不要将此答案标记为无效,我昨天加入了,无法添加评论。
你能更清楚地说明你想达到什么目的吗?
你想在spark中读取数据然后做什么?你有什么样的数据?
如果您希望输出如下?

Month         Count
2017-03       123
2017-02       234
2017-01       345
2016-12       456

试试下面的代码是否适合你。

import sqlContext.implicits._
 sqlContext.read.text("/inputdata1/").toDF().groupBy("Month","Year").sum("*")

相关问题