我们可以在Apache Spark中访问HDFS文件系统和纱线调度程序吗?
-
16-10-2019 - |
题
我们可以在Apache-Hadoop中访问HDFS文件系统和纱线调度程序。但是Spark具有更高的编码水平。是否也可以在Apache Spark中访问HDF和纱线?
谢谢
解决方案
是的。
Spark官方文件中有示例: https://spark.apache.org/examples.html只需将您的HDFS文件URI放入下面的输入文件路径(Scala语法)即可。
val file = spark.textFile("hdfs://train_data")
其他提示
HDFS
Spark是作为MapReduce的替代品构建的,因此支持其大部分功能。特别是,这意味着“ Spark可以从Hadoop支持的任何存储源创建分布式数据集,包括您的本地文件系统,HDFS,Cassandra,HBase,HBase,Amazon S3等。”1. 。对于大多数常见的数据源(例如HDFS或S3),Spark会自动识别模式,例如:
val sc = SparkContext(...)
val localRDD = sc.textFile("file://...")
val hdfsRDD = sc.textFile("hdfs://...")
val s3RDD = sc.textFile("s3://...")
对于更复杂的情况,您可能需要使用较低级别的功能 newAPIHadoopFile
:
val hBaseRDD = sc.newAPIHadoopRDD(conf, classOf[TableInputFormat],
classOf[org.apache.hadoop.hbase.io.ImmutableBytesWritable],
classOf[org.apache.hadoop.hbase.client.Result])
val customRDD = sc.newAPIHadoopRDD(conf, classOf[MyCustomInputFormat],
classOf[MyCustomKeyClass],
classOf[MyCustomValueClass])
但是一般规则是,如果某些数据源可用于MAPREDUCE,则可以轻松地在Spark中重复使用。
纱
当前SPARK支持3个集群经理 /模式:
- 独立
- Mesos
- 纱
独立模式使用Spark自己的主服务器,仅适用于SPARK,而YARN和MESOS模式旨在在几个框架之间共享相同的系统资源集(例如Spark,MapReduce,Impala等)。可能会发现纱线和介体的比较 这里, ,以及纱线上火花的详细描述 这里.
而且,在火花的最佳传统中,您可以简单地通过更改来切换不同的模式 大师URL.