
DateFrame
楓尘林间
计算机爱好者
展开
-
spark读写hdfs
无原创 2022-10-27 10:20:16 · 321 阅读 · 0 评论 -
spark利用EsSparkSQL读写ES
spark读写ES原创 2022-10-26 18:28:25 · 541 阅读 · 0 评论 -
scala spark dataframe 时间加减
无原创 2022-10-25 18:19:04 · 1962 阅读 · 0 评论 -
spark DataFrame使用collection()方法和groupBy()、isDefined
collect()把 dataframe格式转化为 Array[Row]格式以movieLens数据前7行位例userdata.show()部分数据展示:+------+-------+------+----------+|userId|movieId|rating| timestamp|+------+-------+------+----------+| 1| 2| 3.5|1112486027|| 1| 29| 3.5|111248467原创 2021-04-19 17:17:26 · 1461 阅读 · 0 评论 -
iterrows(), iteritems(), itertuples()对dataframe进行遍历
iterrows(), iteritems(), itertuples()对dataframe进行遍历iterrows(): 将DataFrame迭代为(insex, Series)对。itertuples(): 将DataFrame迭代为元祖。iteritems(): 将DataFrame迭代为(列名, Series)对参考做梦当财神 的博客转载 2021-03-01 16:25:32 · 192 阅读 · 0 评论 -
python 将dict转换为Dataframe
def trans_dic_2_matrix(dic): return DataFrame(dic).T.fillna(0)dic = {"1": {"2":3}, "2": {"3":1}}dd = trans_dic_2_matrix(dic)dd.head()结果: 2 31 3.0 0.02 0.0 1.0dict的setdefault方法:参考:python 教程原创 2021-02-26 16:58:22 · 469 阅读 · 0 评论 -
spark dataframe的时间类型和String类型转化
https://www.cnblogs.com/mylittlecabin/p/11692363.htmlhttps://stackoverflow.com/questions/40763796/convert-date-from-string-to-date-format-in-dataframeshttps://www.nuomiphp.com/eplan/29850.html原创 2021-01-07 18:22:26 · 20617 阅读 · 1 评论 -
spark sql 查询hive表是否存在
利用 show tables in DBname like ‘TABLEname’ 语句var userid = "test"var datasetid1 = "dm_op_log"var datasetid2 = "bb"var s = spark.sql(s"show tables in $userid like '$datasetid1' ")s.show()println("@@@@", s.count())var s2 = spark.sql(s"show tables.原创 2020-10-22 17:46:36 · 3803 阅读 · 0 评论 -
pandas下dataframe对某列使用自定义函数
import mathdef scale(x): if x > 2: x = int(math.log(float(x))**2) return xdata_value['I5']=data_value['I5'].apply(scale)原始数据data_value.head(10)进行函数变换后:data_value.head(10)原创 2020-10-11 22:29:11 · 8310 阅读 · 2 评论 -
pandas 对dataframe的复制
转载自:https://www.it1352.com/1689965.htmlimport numpy as npimport pandas as pdarr = np.array( [[1,0,1,1,1,5], [0,0,0,0,1,3], [1,0,0,0,1,1], [1,0,0,1,1,1], [1,0,0,0,1,1], [1,1,0,0,1,1]] )df = pd.DataFrame( np.repeat(转载 2020-10-10 15:22:42 · 3426 阅读 · 0 评论 -
Spark sql 利用COALESCE()函数full join 两张DataFrame
我们经常使用spark时会对表合并import spark.implicits._import spark.implicits._var data1 = Seq( | ("1", "ming", "hlj"), | ("2", "tian", "jl"), | ("3", "wang", "ln"), | ("4", "qi", "bj"), | ("5", "sun", "tj") | ).toDF("useid", "name", "live") var data原创 2020-08-19 15:27:11 · 2259 阅读 · 0 评论 -
Spark的DataFrame存储的Mode模式选择
spark的dataframe存储中都会调用write的mode方法:data.write.mode(“append”).saveAsTable(s"userid.{userid}.userid.{datasetid}")data.write.mode(SaveMode.Overwrite).parquet(hdfspath)但不同时候的参数是不同的先看一下源码:spark-v2.3.0: def mode(saveMode: SaveMode): DataFrameWriter[T]原创 2020-08-13 17:38:21 · 7304 阅读 · 0 评论 -
Spark对两个列数不一致DataFrame进行上下拼接
之前已经在博客中介绍了spark的dataframe利用union 等一系列方法进行拼接,详情请见Spark中对Dataframe的union 、unionAll和 unionByName方法说明但是在那篇博客也提到,利用union的这些方法,必须保证两个dataframe必须列数一致(unionByName方法还需要所有列名必须一致)。那么如果如果dfA和dfB的列长度不一致,应该怎么去上下拼接呢?val data2 = Seq( | ("1", null, "hlj", null),原创 2020-08-04 10:24:49 · 3277 阅读 · 0 评论 -
spark中DataFrame存在空值是否计算情况说明
一直有个疑问,出现空值数据列,在计算时,是否会被计算?1. 空值出现在计算字段中给定某个DataFrame,其中包含空值:val data1 = Seq( | ("1", "ming", "hlj", null), | ("2", "tian", "jl", "1"), | ("3", "ming", "hg", "1"), | ("4", "tian", "bj", "1"), | ("5", "ming", "tj", "1") | ).toDF("useid", "name"原创 2020-08-03 18:24:21 · 2680 阅读 · 0 评论 -
spark2.x读取csv文件乱码问题
由于spark读取csv时,默认编码格式是utf-8,如果csv文件的格式是其他,需要加上编码格式的设定例:如果csv格式为GBKimport org.apache.spark.sql.SparkSessionval spark = SparkSession.builder().appName(“demo”).getOrCreate();如果用默认格式utf-8读取:var data = spark.read.option("header", false).option("delimiter",原创 2020-07-16 17:26:05 · 2789 阅读 · 0 评论 -
由 cannot resolve ‘`a.stuID`‘ given input columns: [a.stuID, a.zhuanID, b.stuID, b.zhuanID]错误引发的思考
利用sparksql对两张表进行join,报错:检查表中字段:发现两张表内都存在stuID。折腾了好久也没弄好,后来不甘心,将数据转为txt格式,没想到同样的代码***跑通了***。这可太amazing了,打开两个文档反复对比了一下。并没有什么不同,直到身边的大神让我查看一下文件的编码才发现端倪:## 预览文件head -n 1 xxx.txt | od -clinux 下的od命令可以查看 这篇博客结果显示:发现csv文件的第一行第一列开头比txt多了三个字符,原因就在这:再次原创 2020-07-08 19:20:20 · 9770 阅读 · 1 评论 -
Spark dataframe某一列转化为Array
首先,必须保证列没有空值,如果有,则需要drop$colName 为 列名data = data.na.drop(s"$colName")输出格式为ArrayAnydata0.select(s"$cname").collect().map(_(0))变为String或Double需要定义函数 // 类型转换为String def ToString(s:Any):Strin...原创 2020-04-19 18:07:56 · 8423 阅读 · 2 评论 -
Spark生成(创建)dataframe的三种方式
方法一由于Spark中构造Dataframe 即使是数值类型的数据 也需要以String形式进行创建,var data = Seq( ("0.1","0"), ("0.15","0"), ("0.8","1"), ("1.0","1")).toDF("predict","label")+-------+-----+|predict|label|+-------+-----+|...原创 2020-04-15 11:21:55 · 581 阅读 · 0 评论 -
Spark DataFrame转化为RDD[Vector],应用于KMeans聚类,monotonically_increasing_id()方法进行结果合并
将DataFrame转化为RDD[Vector],应用于KMeans聚类模型训练import org.apache.spark.mllib.linalg.Vectorsimport org.apache.spark.rdd.RDD import org.apache.spark.mllib.clustering.{KMeans, KMeansModel}import org.apac...原创 2020-03-30 18:50:49 · 2142 阅读 · 3 评论 -
Spark sql 单引号'' 使用问题
spark sql中单引号意味着要某个变量所代表的值如var q = 111spark.sql(s"select '$q' as t").show()+---+| t|+---+|111|+---+去掉单引号spark.sql(s"select $q as t").show()+---+| t|+---+|111|+---+两者在该情境下是...原创 2020-03-27 16:37:57 · 3493 阅读 · 0 评论 -
Spark scala中将Array(Row)转化为DataFrame(另一种抽样方式)
1.spark DataFrame常规的采样方式——sample()由于scala中 对DataFrame 方式为 sample() 方法sample : 采样采样变换根据给定的随机种子,从RDD中随机地按指定比例选一部分记录,创建新的RDD。采样变换 在机器学习中可用于进行交叉验证。语法def sample(withReplacement: Boolean, fraction: Do...原创 2020-03-20 14:10:03 · 8088 阅读 · 0 评论 -
Spark Dataframe 按某一行排序新加一列index
1.Dataframe按某一行排序新加一列index (index不重复)import spark.implicits._import spark.implicits._var data2 = Seq( ("0", "2002", "196", "1", "bai"), ("1", "4004", "192", "2", "wang"), ("0", "7007", "95...原创 2020-03-19 20:44:21 · 1930 阅读 · 0 评论 -
Spark DataFrame统计某列特征不同个数
Scala版本import spark.implicits._var data1 = Seq( ("0", "2002", "196", "1", "bai"), ("1", "4004", "192", "2", "wang"), ("0", "7007", "95", "3", "wang"), ("0", "4004", "4", "4", "wang"), ("0...原创 2020-03-19 17:18:58 · 10270 阅读 · 0 评论 -
SparkDataFrame求某一列的最大值和最小值和求和
1.利用Scala沟边import spark.implicits._var data1 = Seq( ("0", "2002", "196", "1", "bai"), ("1", "4004", "192", "2", "wang"), ("0", "7007", "95", "3", "wang"), ("0", "4004", "4", "4", "wang")...原创 2020-03-18 13:44:38 · 13929 阅读 · 0 评论 -
Scala Array数组和ArrayBuffer可变数组的相互转化
Array 转 ArrayBuffer将Array转换成已经声明的类型为ArrayBuffer的成员变量,需要使用asInstanceOf进行强制转换val array = Array[String]("a", "b", "c")println(s"array=$array")val arrayToBuffer = array.toBuffer.asInstanceOf[ArrayBuff...转载 2020-03-16 14:54:59 · 3631 阅读 · 0 评论 -
Spark DataFrame选择其中一列或几列
DataFrame使用抽取一列或几列import spark.implicits._var data1 = Seq( ("0", "ming", "tj","2019-09-06 17:15:15", "2002", "192.196", "win7", "bai"), ("1", "ming", "tj","2019-09-07 16:15:15", "4004", "192.19...原创 2020-03-16 14:38:49 · 15619 阅读 · 1 评论 -
Scala判断类型是否为数值型
基本类型:类型Byte Short Int Long和Char被称为整数类型(integral type),整数类型加上Float和Double被称为数类型(numeric type) NumericType。官方API说明文档:http://spark.apache.org/docs/1.4.0/api/java/org/apache/spark/sql/types/NumericType....原创 2020-03-16 11:25:08 · 4724 阅读 · 0 评论 -
Spark DataFrame的空值形式和空值和非空值之间的相互转换
1.空值替换为其他值建df时的空值表示形式为:nullnullval df = Seq("a", null, "c", "b").toDF("col1")df.show()var df4 = df.na.fill(value="qqq",Array[String]("col1"))df4.show()df: org.apache.spark.sql.DataFrame = [co...原创 2020-02-21 17:44:29 · 7518 阅读 · 0 评论 -
Scala的dataframe生成与map转化为dataframe
1.生成dataframe的两种方式由于Spark中构造Dataframe 即使是数值类型的数据 也需要以String形式进行创建,var data = Seq( ("0.1","0"), ("0.15","0"), ("0.8","1"), ("1.0","1")).toDF("predict","label")+-------+-----+|predict|label|+-...原创 2020-02-20 22:25:27 · 6392 阅读 · 0 评论 -
Scala的空值删除和空值填充
重点:删除空值值所在行不考虑选择列的数据类型,而填充时一定要看好对应填充列的数据类型。删除import spark.implicits._var datafff = Seq( ("0", "ming", "tj","2019-09-06 17:15:15", "2002", "192.196", "win7", "bai"), ("0", null, "ln","2019-09-0...原创 2020-02-13 17:51:31 · 7110 阅读 · 0 评论 -
(转载)Scala 报错:CSV data source does not support struct type:tinyint,size:int,indices:array int
运行Spark报错:Exception in thread “main” java.lang.UnsupportedOperationException: CSV data source does not support struct<type:tinyint,size:int,indices:array,values:array> data type. at查看多篇博客发现:因为是...转载 2020-01-19 16:56:57 · 6467 阅读 · 0 评论 -
(转载)Spark 几种给Dataset增加列的方式、Dataset删除列、Dataset替换null列
1.不修改,只是过滤掉含有null值的行。 这里是过滤掉key3,key5列中含有null的行scala> df.na.drop(Seq("key3","key5")).show+----+----+----+----+----+|key1|key2|key3|key4|key5|+----+----+----+----+----+| aaa| 1| 2| t1| ...转载 2020-01-14 17:42:09 · 571 阅读 · 0 评论 -
(转载)Spark将DataFrame所有的列类型更改
Spark 构建DataFrame将String改为Double由于Spark中构造Dataframe 即使是数值类型的数据 也需要以String形式进行创建,var data = Seq( ("0.1","0"), ("0.15","0"), ("0.8","1"), ("1.0","1")).toDF("predict","label")+-------+-----+|pre...转载 2020-01-07 11:25:42 · 4696 阅读 · 0 评论 -
Spark查看变量数据类型和Dataframe每列类型
val x = 5println(x.getClass)结果是:class java.lang.Integer原创 2019-08-16 10:32:29 · 13428 阅读 · 0 评论 -
Spark中对Dataframe的union 、unionAll和 unionByName方法说明
方法说明:union: 两个df合并,但是不按列名进行合并,而是位置,列名以前表为准(a.union(b) 列名顺序以a为准)unionAll:同union方法unionByName:合并时按照列名进行合并,而不是位置举例:把 b表的id_num和CST_NO两列的值更改顺序 var a = Seq( ("1", "ke", "hb","2019-09-04 21...原创 2019-11-10 13:37:19 · 22035 阅读 · 6 评论 -
Spark dataframe与list的转换(多行变一行)
import spark.implicits._var data_csv = Seq( ("ke,sun"), ("tian,sun")).toDF("CST_NO") +--------+| CST_NO|+--------+| ke,sun||tian,sun|+--------+将CST_NO 列var kkk = data_csv.select("...原创 2019-10-29 17:48:59 · 22765 阅读 · 1 评论 -
Python,Pandas和numpy中的NaN
在处理数据时NAN值是非常常见的,但是NaN值你真的了解吗?下面让楓尘君带大家了解一下这个神奇的NAN在csv表格中长这样:在python里展示为这样:我们创建这个值时是这样:import numpy as npnp.nan但是想判断是否是np.nan还真是有点难度:a=np.nanprint(a==np.nan)结果是Falseprint(a.equal(np.na...原创 2019-10-22 20:15:31 · 4572 阅读 · 0 评论 -
Pandas的Dataframe筛选出现 TypeError: '>' not supported between instances of 'float' and 'str'
今天遇到一个问题:pos_data = session_data.loc[(session_data['CST_NO'].isin(pos_list))&(session_data['BIZ_CODE']=='TRANSFER')]报错:查阅资料后发现,是isin的左右类型不一致,都转化为str则不会出现这种问题:改为:添加 astype(str)pos_data = ses...原创 2019-10-12 23:12:58 · 14793 阅读 · 0 评论 -
spark 读取csv 变为dataframe
试了网上的好几种读取csv文件的方法,总会有些错误,用这个方法就解决了,我的环境是spark 2.1.1 val data = spark.read.format("csv").option("header", "true").load("file:///home/xin/lb/AAAA.csv")data.show(10)在文件路径下加"file://” 如果不加,程序会自动搜索hd...原创 2019-09-12 15:17:05 · 2120 阅读 · 0 评论 -
解决sparksql两个DataFrame合并后出现两列相同的情况
我们经常使用spark时会对表合并val data1 = Seq( | ("1", "ming", "hlj"), | ("2", "tian", "jl"), | ("3", "wang", "ln"), | ("4", "qi", "bj"), | ("5", "sun", "tj") | ).toDF("useid", "name", "live") val ...原创 2019-08-29 14:47:20 · 6360 阅读 · 0 评论