ในการอ่านข้อมูลด้วย Apache Spark เรา โดยปกติ Spark จะไม่พยายาม “กำหนด” data type ของ column ที่อยู่ในข้อมูล แต่จะกำหนดเป็นค่าเริ่มต้น เช่น
StringType
สำหรับ column ที่มีข้อมูล StringDoubleType
สำหรับ column ที่เป็นข้อมูลตัวเลข
โดยจะมีการกำหนดค่า data type เริ่มต้นนี้กับทุก column ของข้อมูลที่โหลดขึ้นมา เช่น
initialDF = (spark.read
.parquet(parquetFile)
)
inferSchema(true)
แต่ในกรณีที่เราต้องการเราสามารถสั่งให้ Apache Spark ทำการประเมิน และกำหนด data type ของข้อมูลในแต่ละ column ที่อ่านขึ้นมาได้
initialDF = (spark.read
.option("inferSchema", "true")
.parquet(parquetFile)
)
ใช้ หรือ ไม่ใช้ inferSchema ดี
ลักษณะการทำงานของ inferSchema น่าจะทำให้พวกเรากังวลเกี่ยวกับ
- ถ้าเรามั่นใจว่า data ของเรา “สะอาด (clean)” การใช้ inferSchema จะส่งผลดีต่อการทำงานของ Spark ในการทำงานกับ data ที่โหลดขึ้นมาใน memory แล้ว
- แต่ถ้าเราทำงานกับ Data set ขนาดใหญ่ที่ไม่มั่นใจในคุณภาพของ Data การใช้ inferSchema อาจจะส่งผลตอนอ่านข้อมูลขนาดใหญ่ดังกล่าวได้