使用Spark SQL 探索“全國失信人資料”
“全國法院失信被執行人名單”,網址:http://shixin.court.gov.cn/,可供查詢,用於懲罰失信人員。資料量有100多萬,也算是大資料了。其中身份證號已被處理,並不能直接看到全部號碼。本人承諾不將此資料用於非法用途和不正當用途,僅作為個人學習資料處理分析的資料來源,不針對任何個人和組織。
資料欄位如下:
被執行人姓名/名稱
性別
年齡
身份證號碼/組織機構程式碼
法定代表人或者負責人姓名
執行法院
省份
執行依據文號
立案時間
案號
做出執行依據單位
生效法律文書確定的義務
被執行人的履行情況
失信被執行人行為具體情形
釋出時間
關注次數
資料儲存為JSON格式,比如:
{"id":1000000,"iname":"潘靖","caseCode":"(2014)鄂京山執字第00035號","age":23,"sexy":"男","cardNum":"4208211992****4513","courtName":"京山縣人民法院","areaName":"湖北","partyTypeName":"580","gistId":"(2012)鄂京山道字第162號民事判決書","regDate":"2014年02月24日","gistUnit":"湖北省京山縣人民法院道交法庭","duty":"被告賠償原告款401700元。","performance":"全部未履行","disruptTypeName":"其他有履行能力而拒不履行生效法律文書確定義務","publishDate":"2015年03月23日"}
- 1
失信人資料分為個人、機構。
為了能夠方便將統計結果圖表化,還是採用Zeppelin notebook來處理。
讀入資料:
val json_text = sqlContext.jsonFile("/home/zhf/Downloads/shixin_person.txt")
- 1
輸出JSON欄位:
json_text: org.apache.spark.sql.DataFrame = [age: bigint, areaName: string, businessEntity: string, cardNum: string, caseCode: string, courtName: string, disruptTypeName: string, duty: string, gistId: string, gistUnit: string, id: bigint, iname: string, partyTypeName: string, performance: string, performedPart: string, publishDate: string, regDate: string, sexy: string, unperformPart: string]
- 1
將表快取以便後續快速查詢:
json_text.registerTempTable("shixinren")
sqlContext.cacheTable("shixinren")
- 1
- 2
總記錄數:
%sql select count(*) from shixinren
- 1
1,415,577
- 1
機構數量:
#粗略地把名字長度大於5的認為是機構
%sql select count(*) from shixinren where length(iname) >= 5
- 1
- 2
200,513
其餘的都認為是個人。
- 1
年齡分佈:
%sql select age,count(*) from shixinren group by age order by age
- 1
可見,發生糾紛的人主要是成年人,中年人佔大多數。資料也有一些問題,可能是資料在填寫時候的失誤。
性別分佈:
%sql select sexy,count(*) from shixinren group by sexy
- 1
男性較多啊,男性從時候經濟活動的比較多。還有部分缺失性別的資料。
省份分佈:
%sql select areaName,count(*) c from shixinren group by areaName order by c desc
- 1
發生糾紛的主要是經濟大省和人口大省,一方面這些地方的經濟行為較多,另一方面這些地方的人法律意識較強(被告的法律意識不夠強啊)。
處理案件最多的前10個法院:
%sql select courtName,count(*) c from shixinren group by courtName order by c desc limit 10
- 1
好像都是浙江的法院,然並卵啊。
責任履行情況:
%sql select performance,count(*) from shixinren group by performance
- 1
不履行責任的原因:
%sql select disruptTypeName,count(*) c from shixinren group by disruptTypeName order by c desc limit 10
- 1
看來不履行法院判定的責任並不是沒有能力啊。
不履行責任的姓氏TOP20:
%sql select substr(iname,0,1),count(*) c from shixinren where length(iname) <3 group by substr(iname,0,1) order by c desc limit 20
- 1
為了方便,不統計複姓。排前的都是常見的姓氏。
法院立案的年份:
%sql select substr(regdate,0,4),count(*) c from shixinren group by substr(regdate,0,4)
- 1
近年來數量逐步增加,可不是好事啊。同樣資料有少量錯誤。
立案月份分佈:
%sql select substr(substr(regdate,6,6),0,2),count(*) c from shixinren group by substr(substr(regdate,6,6),0,2)
- 1
全年分佈均勻,1月份最多,可能是到年頭了,還不還款,只好到法院解決(沒想到最後還是沒能解決!)。
一個人/機構多次作為被告的情況:
#姓名、證件號碼一致就認為是同一個被告了
%sql select count(*) from (select iname,cardNum,count(*) c from shixinren group by iname,cardNum having c>1)t
- 1
- 2
187,020
- 1
前10:
%sql select iname,cardNum,count(*) c from shixinren group by iname,cardNum having c>1 order by c desc limit 10
- 1
竟然有這麼多,這種時候主要還是公司,但也有“牛人”啊。
其中,案件的【生效法律文書確定的義務】如果通過分詞,再統計詞頻,就可以知道哪些事件發生欠款的比較多了,用SQL的話,需要寫UDF來分詞,這裡就不處理了。
轉載地址:http://lib.csdn.net/article/spark/63646
相關文章
- Spark SQL使用簡介(3)--載入和儲存資料SparkSQL
- 用Java抓取天眼查公開失信人員資訊Java
- 美國四大運營商被曝失信,繼續出賣使用者位置資料
- 使用Spark載入資料到SQL Server列儲存表SparkSQLServer
- Spark系列 - (3) Spark SQLSparkSQL
- Spark SQL:4.對Spark SQL的理解SparkSQL
- 全棧 – 15 實戰 Diamonds 資料集探索全棧
- Spark SQL外部資料來源與實現機制SparkSQL
- spark sql與mysql 資料載入與匯出資料到mysqlSparkMySql
- 大資料Spark Sql中日期轉換FROM_UNIXTIME和UNIX_TIMESTAMP的使用大資料SparkSQL
- Spark SQL 教程: 通過示例瞭解 Spark SQLSparkSQL
- Spark SQL 教程: 透過示例瞭解 Spark SQLSparkSQL
- Databricks 第6篇:Spark SQL 維護資料庫和表SparkSQL資料庫
- spark學習筆記--Spark SQLSpark筆記SQL
- 袋鼠雲數棧基於CBO在Spark SQL優化上的探索SparkSQL優化
- Spark SQL:JSON資料來源複雜綜合案例實戰SparkSQLJSON
- Spark SQL:Hive資料來源複雜綜合案例實戰SparkSQLHive
- Spark SQL:JDBC資料來源複雜綜合案例實戰SparkSQLJDBC
- Spark SQL:Parquet資料來源之自動分割槽推斷SparkSQL
- Spark SQL | Spark,從入門到精通SparkSQL
- spark2.2.0 配置spark sql 操作hiveSparkSQLHive
- Spark 系列(九)—— Spark SQL 之 Structured APISparkSQLStructAPI
- Blazor使用sql server 資料庫BlazorSQLServer資料庫
- 最新!SQL Server 2019將結合Spark建立統一資料平臺!SQLServerSpark
- Databricks 第9篇:Spark SQL 基礎(資料型別、NULL語義)SparkSQL資料型別Null
- Spark Streaming使用Kafka保證資料零丟失SparkKafka
- Spark API 全集(1):Spark SQL Dataset & DataFrame APISparkAPISQL
- Spark 系列(十一)—— Spark SQL 聚合函式 AggregationsSparkSQL函式
- Spark Streaming + Spark SQL 實現配置化ETSparkSQL
- 使用spark-sql處理Doris大表關聯SparkSQL
- spark sql 實踐(續)SparkSQL
- Spark SQL使用簡介(2)--UDF(使用者自定義函式)SparkSQL函式
- 使用Apache Spark和Apache Hudi構建分析資料湖ApacheSpark
- Spark SQL三種join和資料傾斜的產生和解決辦法SparkSQL
- spark寫入hive資料SparkHive
- Spark讀取MySQL資料SparkMySql
- 10個SQL技巧之二:使用遞迴SQL生成資料SQL遞迴
- 【Spark篇】---Spark解決資料傾斜問題Spark
- 使用Oracle SQL Developer匯入Excel資料OracleSQLDeveloperExcel