爲了可以更加優美的寫blog,今天專門看了下markdown的文檔。先嚐試下,反正之後有的要寫了。
言歸正傳,先總結下今天學習到的東西。算法
pyspark已經學習的差很少了,因此也直接找了個例子來試了下手。具體的過程先不貼出來了,由於不是在本地作的,不太好記錄過程。說一下學習的心得:
1. 目前瞭解到的pyspark有2種經常使用的類,一種是RDD一種是Dataframe。而後Dataframe能夠經過createOrReplaceTempView函數或者sqlContext.registerDataFrameAsTable來轉換爲表,而後經過sqlContext.sql(「sql 表達式」)來查詢和操做。sql
import findspark #整段都是初始化的過程 findspark.init() import os import pyspark from time import time data_file = "../data/kddcup.data_10_percent_corrected" sc = pyspark.SparkContext(appName="test") raw_data = sc.textFile(data_file).cache() from pyspark.sql import SQLContext sqlContext = SQLContext(sc) interactions_df = sqlContext.createDataFrame(row_data) #建立了DF
建表的兩種方法:markdown
interactions_df.createOrReplaceTempView("interactions") sqlContext.registerDataFrameAsTable(df=interactions_df, tableName='interactions_df')
查詢數據:app
sqlContext.sql("select * from interactions_df where protocol_type='tcp'").show(5) out: +---------+--------+----+-------------+-------+---------+ |dst\_bytes|duration|flag|protocol\_type|service|src\_bytes| +---------+--------+----+-------------+-------+---------+ | 5450| 0| SF| tcp| http| 181| | 486| 0| SF| tcp| http| 239| | 1337| 0| SF| tcp| http| 235| | 1337| 0| SF| tcp| http| 219| | 2032| 0| SF| tcp| http| 217| +---------+--------+----+-------------+-------+---------+
咱們能夠看到使用DF構建表之後咱們就能夠是用通常的SQL語句來對數據進行查詢了,包括SQL自帶的一些功能函數,如group by, order by, distinct,count等等。這樣須要的就是sql的知識了。tcp
而後從table轉回DF:函數
sqlContext.table('interactions_df') out: DataFrame [dst_bytes: bigint, duration: bigint, flag: string, protocol_type: string, service: string, src_bytes: bigint]
轉換起來也很是的方便。工具
可是這就留下了一個思考:
咱們有了RDD,DF和TABLE這些儲存數據的工具,那麼如何抉擇呢?學習
今天主要講了XGBOOST, GBDT這種集成類算法,有點亂,後續須要本身補齊算法的知識。這裏就不作詳解了,後續應該會寫出一篇專門關於算法的文章。spa