为了可以更加优美的写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