使用scala写两个方法,用于读取hdfs上某个目录下的parqute文件,目录格式为hdfs://ns-hf/project/rdg_cbm_kg/rdg_cbm_kg/newbing-common-crawl/当前日期/当前小时/
时间: 2023-07-05 21:27:15 浏览: 74
好的,下面是使用 Scala 读取 HDFS 上 Parquet 文件的两个方法:
1. 读取单个 Parquet 文件
```scala
import org.apache.spark.sql.{DataFrame, SparkSession}
// 传入文件路径,返回 DataFrame
def readParquetFile(filePath: String)(implicit spark: SparkSession): DataFrame = {
spark.read.parquet(filePath)
}
```
使用示例:
```scala
implicit val spark: SparkSession = SparkSession.builder()
.appName("Read Parquet File")
.master("local[*]") // 这里使用 local 模式,实际使用时需要修改
.getOrCreate()
val filePath = "hdfs://ns-hf/project/rdg_cbm_kg/rdg_cbm_kg/newbing-common-crawl/2022-02-22/12/*.parquet"
val df = readParquetFile(filePath)
df.show()
```
其中,`filePath` 是 Parquet 文件的路径,可以使用通配符 `*` 匹配多个文件。
2. 读取目录下所有 Parquet 文件
```scala
// 传入目录路径,返回 DataFrame
def readParquetFiles(dirPath: String)(implicit spark: SparkSession): DataFrame = {
spark.read.parquet(dirPath)
}
```
使用示例:
```scala
implicit val spark: SparkSession = SparkSession.builder()
.appName("Read Parquet Files")
.master("local[*]") // 这里使用 local 模式,实际使用时需要修改
.getOrCreate()
val dirPath = "hdfs://ns-hf/project/rdg_cbm_kg/rdg_cbm_kg/newbing-common-crawl/2022-02-22/12/"
val df = readParquetFiles(dirPath)
df.show()
```
其中,`dirPath` 是目录的路径,该方法会自动读取该目录下的所有 Parquet 文件。