Home เขียนโปรแกรม Apache Spark (Python) ดึงข้อมูลจากฐานข้อมูล MySQL

Apache Spark (Python) ดึงข้อมูลจากฐานข้อมูล MySQL

by gigkokman

หลังจากที่ได้พูดถึงการเก็บข้อมูลเข้า Elasticsearch ด้วย Apache Spark แล้ว วันนี้มาดูวิธีดึงข้อมูลจาก Relational Database อย่าง MySQL กันบ้าง ซึ่งปกติแล้ว Spark จะดึงข้อมูลทั้งหมดที่อยู่ใน table ออกมาให้เลย แต่ก็มีเทคนิคที่จะดึงข้อมูลจากเงื่อนไขที่เราต้องการได้เหมือนกัน ^^

ก่อนอื่นก็สร้าง SQLContext จาก SparkContext ก่อน

sql_context = SQLContext(spark_context)

แล้วก็เรียกใช้ฟังก์ชัน load ของ SQLContext

sql_context.load(resource="jdbc", driver="com.mysql.jdbc.Driver", url="jdbc:mysql://<mysql-server>/<database-name>?user=<username>&password=<password>", dbtable="<table>")

จากคำสั่งข้างบน Spark จะดึงข้อมูลทั้งหมดของ

ออกมา (select * from) แต่ถ้าเราอยากได้ข้อมูลตามเงื่อนไขของเราก็สามารถใส่ subquery แทนได้ เช่นอยากได้ข้อมูลของลูกค้าที่มี id น้อยกว่า 1000 ก็ให้เปลี่ยนค่าของ dbtable เป็น

(select * from user where id < 1000) as my_user

จากนั้นในขั้นตอน spark-submit ก็ให้ระบุ mysql-connector เข้าไปด้วยครับ

bin/spark-submit ... --jars path/to/mysql-connector-java-5.0.8-bin.jar

Apache Spark ดึงข้อมูลจาก MySQL เรียบร้อยครับ ^^

You may also like