我知道如何在scala中找到文件大小.但是如何在spark中找到RDD/dataframe大小?
斯卡拉:
object Main extends App {
val file = new java.io.File("hdfs://localhost:9000/samplefile.txt").toString()
println(file.length)
}
Run Code Online (Sandbox Code Playgroud)
火花:
val distFile = sc.textFile(file)
println(distFile.length)
Run Code Online (Sandbox Code Playgroud)
但如果我处理它没有获得文件大小.如何找到RDD大小?
实际上我正在尝试与R集成我的级别,但是我收到了这个错误.
包'rmr','rJava','RJSONIO','rhdfs','rhbase','plyrmr'不可用(对于R版本3.1.3)
将Hadoop与R集成的步骤:
在Ubuntu中安装了R和Hadoop.
在〜/ .bashrc文件中添加这三行.
*export HADOOP_PREFIX =/Users/hadoop/hadoop-1.1.2
export HADOOP_CMD =/Users/hadoop/hadoop-1.1.2/bin/hadoop
export HADOOP_STREAMING =/Users/hadoop/hadoop-1.1.2/contrib/streaming/hadoop-streaming-1.1.2.jar*
使用此命令安装R软件包
install.packages(c("rJava", "RJSONIO", "rmr", "rhdfs", "rhbase", "plyrmr").
Run Code Online (Sandbox Code Playgroud)
但我得到了上述错误.如何集成R和Hadoop的主要问题是什么?我已按照此链接进行整合.
分布式缓存是一种存储常见请求并支持快速检索的方法.
Tachyon是一个以内存为中心的分布式存储文件系统,可避免进入磁盘以加载经常读取的数据集.
这两者有什么不同?
RDD是跨群集节点分区的元素的集合.它是核心组件和抽象.
批处理: SparkStreaming API简单地将数据分成批处理,批处理也是Streaming对象/元素的相同集合.根据需求,在基于时间的批处理窗口和基于密集在线活动的批处理窗口中定义的一组批次.
Rdd&Batches有什么区别?
请仔细观察这两种情况.
scala> var aa ="ABCD, aaaa, fdad and others, lkda;fd, fdaf".split(",")
aa: Array[String] = Array(ABCD, " aaaa", " fdad and others", " lkda;fd", " fdaf")
scala> var aa ="ABCD, aaaa, fdad and others, lkda;fd, fdaf".split(" ")
aa: Array[String] = Array(ABCD,, aaaa,, fdad, and, others,, lkda;fd,, fdaf)
Run Code Online (Sandbox Code Playgroud)
在第一个场景中基于逗号分割(,)在这种情况下,第一个单词不显示在"引号"中,其余单词显示在"引号"中.为什么?
在第二个场景中,用逗号分隔所有内容都显示没有"引号"为什么?通常字符串显示在引号内,但这里没有显示那样的原因?
每个Hadoop开发人员都知道Combiner是优化mapreduce的关键,但是它是可选的。它可以最小化带宽并提高mapreduce作业的性能。在这里,我的问题是,hadoop会将许多功能默认设置为数据局部性问题,而不是将Combiner设置为默认值。为什么?这意味着在所有情况下都不推荐使用合并器吗?什么时候不使用组合器?如果我将其设置为默认值,会有什么问题?