在一些情景下,需要用spark讀取hadoop的文件的具體內容,這裏做一下簡單介紹。
pom.xml
pom.xml如下:
<dependencies>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.4.0</version>
</dependency>
</dependencies>
具體代碼以及註釋
import org.apache.spark.{SparkConf, SparkContext}
object test {
def main(args: Array[String]): Unit = {
// 本地模式, AppName裏的參數可以隨便寫
val conf = new SparkConf().setAppName("test").setMaster("local[*]")
val sc = new SparkContext(conf)
// 地址和端口是hadoop的,路徑是要讀取的文件
val hadoopRdd = sc.textFile(
"hdfs://192.168.153.129:9000/user/hive/warehouse/test.db/t1/dt=3/t1"
)
println(hadoopRdd.count())
}
}
這樣就可以讀取到hadoop文件中的具體內容,結合實際需求做相應處理即可。
這裏有一個和這個有關的項目的文章,建議一看
Java,Scala - 使用代碼統計hadoop中hdfs的文件大小以及文件夾大小