查看hdfs文件分块
hdfs dfs -mkdir -p /events/data
hdfs dfs -put /xxx/xx/3.csv(本地目录) /events/data(hdfs目录)
hdfs fsck /events/data/events.csv -files -blocks //查看文件有多少个物理分块
128M一块,所以1.17G被分成9个物理块,这个文件用spark来装逻辑块,如果一条记录数据量不大的话,
物理块基本等于逻辑块数量,如果太大,可能会不一样。
它的意思就是比如说极端情况下,我有130M的文件,这是2个物理块对吧,一个128M,一个2M,假设我极端情况只有2条数据,那物理块那一刀其实是切在我第二条数据的尾巴了,所以说第二个物理块上有我不可分割的数据,虽然是两个物理块,
但实际上只是1个逻辑块。
spark分区:
默认的就是文件有多少个逻辑块装进spark,就有多少个分区。
当然你可以自己设置分区的数目,这样的话,比如你机器很充裕,你可以按你机器的数量来分区。这是有别
于mapreduce的地方。
val wc = sc.textFile("hdfs:///events/data/3.txt",20) //从hdfs加载文件
val wc = sc.textFile("file:///home/liugen/3.txt",20) //分成20个分区,默认是按hdfs中逻辑块的数量来分。
val data=wc.partitions.size //wc是一个RDD对象,查看他分区的数量
vale data=wc.repartition(25) //在wc的基础上重新生成一个25分区的变量