
ในการอ่านข้อมูลด้วย 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 อาจจะส่งผลตอนอ่านข้อมูลขนาดใหญ่ดังกล่าวได้