spark读取csv文件。利用反射机制推断schema
时间: 2023-09-30 22:05:36 浏览: 146
在Spark中,可以使用反射机制推断CSV文件的schema。具体步骤如下:
1. 导入需要的类:
```scala
import org.apache.spark.sql._
import org.apache.spark.sql.types._
```
2. 定义case class,表示CSV文件的每一行数据:
```scala
case class Person(name: String, age: Int, gender: String)
```
注意:case class的字段名需要与CSV文件中的列名保持一致。
3. 使用SparkSession对象读取CSV文件,并将每一行数据转化为case class对象:
```scala
val spark = SparkSession.builder().appName("CSV Reader").master("local[*]").getOrCreate()
val csvData = spark.read.option("header", "true").csv("path/to/csv/file").as[Person]
```
其中,option("header", "true") 表示CSV文件的第一行为列名。
4. 获取schema信息:
```scala
val schema = Encoders.product[Person].schema
```
5. 打印schema信息:
```scala
schema.printTreeString()
```
完整的代码如下:
```scala
import org.apache.spark.sql._
import org.apache.spark.sql.types._
case class Person(name: String, age: Int, gender: String)
object Main {
def main(args: Array[String]): Unit = {
val spark = SparkSession.builder().appName("CSV Reader").master("local[*]").getOrCreate()
val csvData = spark.read.option("header", "true").csv("path/to/csv/file").as[Person]
val schema = Encoders.product[Person].schema
schema.printTreeString()
}
}
```
其中,"path/to/csv/file" 需要替换为实际的CSV文件路径。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)