SparkはJDBCを読んでデータを事前にフィルタリングします。
2987 ワード
Mysqlの読み取り方法を参照してください。
http://blog.csdn.net/baifanwudi/article/details/78559177
このような需要があります。mysqlのある表のある日のデータを読みます。
http://blog.csdn.net/baifanwudi/article/details/78559177
このような需要があります。mysqlのある表のある日のデータを読みます。
String beginTime = day+ " 00:00:00";
String endTime = day + " 23:59:59";
Dataset jdbcTable=spark.read().format("jdbc")
.option("url", PropertiesConfig.URL)
.option("dbtable",tableName)
.option("user",PropertiesConfig.USERNAME)
.option("password",PropertiesConfig.PASSWORD).load().filter("create_time between '"+beginTime+"' and '"+endTime+"'");
sparkを発見したのは、このtable Nameのすべてのデータをsparkにロードしてからfilterするので、スピードが遅いです。だから、先にフィルタしてもいいですか?やっと方法を見つけました。 String tableName= "(select * from device_info where create_time between '"+ beginTime + "' and '" + endTime + "' ) as device_time_filter";
Dataset jdbcTable=spark.read().format("jdbc")
.option("url", PropertiesConfig.URL)
.option("dbtable",tableName)
.option("user",PropertiesConfig.USERNAME)
.option("password",PropertiesConfig.PASSWORD).load().
このmysql時計のcreateだけでいいです。timeはindexを建てて、効率はとても速いです。原理は先にmysqlからdeviceを濾過して読みます。info張表はdevice_と改めて命名されました。time_filter.