<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[liuyingying0418的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/liuyingying0418</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; liuyingying0418]]></copyright><item><title><![CDATA[hive-拉链表]]></title><link>https://blog.youkuaiyun.com/liuyingying0418/article/details/142442384</link><guid>https://blog.youkuaiyun.com/liuyingying0418/article/details/142442384</guid><author>liuyingying0418</author><pubDate>Sun, 22 Sep 2024 20:03:47 +0800</pubDate><description><![CDATA[hive拉链表实践]]></description><category></category></item><item><title><![CDATA[doris--Apache Doris 1.1.0编译过程记录]]></title><link>https://blog.youkuaiyun.com/liuyingying0418/article/details/129568424</link><guid>https://blog.youkuaiyun.com/liuyingying0418/article/details/129568424</guid><author>liuyingying0418</author><pubDate>Wed, 15 Mar 2023 22:11:19 +0800</pubDate><description><![CDATA[doris1.1.0的编译过程]]></description><category></category></item><item><title><![CDATA[clickhouse--求累计数值]]></title><link>https://blog.youkuaiyun.com/liuyingying0418/article/details/124759353</link><guid>https://blog.youkuaiyun.com/liuyingying0418/article/details/124759353</guid><author>liuyingying0418</author><pubDate>Fri, 13 May 2022 21:10:39 +0800</pubDate><description><![CDATA[clickhouse求累计值的几种方法]]></description><category></category></item><item><title><![CDATA[clickhouse--行列转换]]></title><link>https://blog.youkuaiyun.com/liuyingying0418/article/details/124756154</link><guid>https://blog.youkuaiyun.com/liuyingying0418/article/details/124756154</guid><author>liuyingying0418</author><pubDate>Fri, 13 May 2022 20:25:46 +0800</pubDate><description><![CDATA[clickhouse行专列与列转行的方法]]></description><category></category></item><item><title><![CDATA[clickhouse--特殊子句]]></title><link>https://blog.youkuaiyun.com/liuyingying0418/article/details/121707107</link><guid>https://blog.youkuaiyun.com/liuyingying0418/article/details/121707107</guid><author>liuyingying0418</author><pubDate>Wed, 04 May 2022 17:41:19 +0800</pubDate><description><![CDATA[WITH子句
语法
WITH &lt;expression&gt; AS &lt;identifier&gt;
or
WITH &lt;identifier&gt; AS &lt;subquery expression&gt;

将常量表达式作为“变量”使用
WITH '2019-08-01 15:23:00' as ts_upper_bound
SELECT *
FROM hits
WHERE
    EventDate = toDate(ts_upper_bound) AND
    EventTime]]></description><category></category></item><item><title><![CDATA[clickhouse--性能优化]]></title><link>https://blog.youkuaiyun.com/liuyingying0418/article/details/121618255</link><guid>https://blog.youkuaiyun.com/liuyingying0418/article/details/121618255</guid><author>liuyingying0418</author><pubDate>Wed, 04 May 2022 16:27:42 +0800</pubDate><description><![CDATA[目录一、建表优化1.1 数据类型1.1.1 时间字段1.1.2 空值存储类型1.2 分区和索引1.3 表参数1.4 写入和删除优化1.5 举例1.6 常见配置1.6.1CPU资源1.6.2 内存资源1.6.3 存储二、语法优化规则2.1 count优化2.2 消除子查询重复字段2.3 谓词下推2.3.1 having2.3.2 子查询2.4 聚合计算外推2.5 聚合函数消除2.6 删除重复2.6.1 删除重复的order by key2.6.2 删除重复的limit by key2.6.3 删除重复的USI]]></description><category></category></item><item><title><![CDATA[pyspark--读取数据]]></title><link>https://blog.youkuaiyun.com/liuyingying0418/article/details/124391632</link><guid>https://blog.youkuaiyun.com/liuyingying0418/article/details/124391632</guid><author>liuyingying0418</author><pubDate>Sun, 24 Apr 2022 20:54:50 +0800</pubDate><description><![CDATA[文章目录pyspark读取数据参数介绍formatschemaloadtableoption读取文件jsoncsvparquet和orc读取数据表hivejdbc

pyspark读取数据
参数介绍
format
DataFrameReader.format(source)

指定不同格式来读取文件，例如以下为指定json格式读取数据：
df = spark.read.format('json').load('python/test_support/sql/people.json')

针对常用几个文件格式]]></description><category></category></item><item><title><![CDATA[pyspark--写入数据]]></title><link>https://blog.youkuaiyun.com/liuyingying0418/article/details/124346855</link><guid>https://blog.youkuaiyun.com/liuyingying0418/article/details/124346855</guid><author>liuyingying0418</author><pubDate>Fri, 22 Apr 2022 16:00:29 +0800</pubDate><description><![CDATA[文章目录pyspark写入数据参数说明modeformatpartitionBybucketBysortByoption数据准备写入文件csv文件txt文件json文件parquet文件orc文件写入数据表api介绍saveAsTableinsertIntojdbc写入hive数据表appendoverwrite分区表写入mysql数据表

pyspark写入数据
参数说明
官网通用的写数据方式如下：
DataFrameWriter.save(path=None, format=None, mode=Non]]></description><category></category></item><item><title><![CDATA[pyspark--创建DataFrame]]></title><link>https://blog.youkuaiyun.com/liuyingying0418/article/details/124244650</link><guid>https://blog.youkuaiyun.com/liuyingying0418/article/details/124244650</guid><author>liuyingying0418</author><pubDate>Tue, 19 Apr 2022 21:11:40 +0800</pubDate><description><![CDATA[通过列表创建
value = [('Alice', 1)]
spark.createDataFrame(value, ['name', 'age']).collect()



value = [('Alice', 1)]
spark.createDataFrame(value, ['name', 'age']).collect()

d = [{'name': 'Alice', 'age': 1}]
spark.createDataFrame(d).collect()

通过pandas创建
spark.]]></description><category></category></item><item><title><![CDATA[pyspark--写hive分区表覆盖指定分区数据]]></title><link>https://blog.youkuaiyun.com/liuyingying0418/article/details/124220837</link><guid>https://blog.youkuaiyun.com/liuyingying0418/article/details/124220837</guid><author>liuyingying0418</author><pubDate>Sat, 16 Apr 2022 22:27:45 +0800</pubDate><description><![CDATA[初次写入分区数据
spark写入hive分区表时，如果数据表事先不存在，可以选择手动建表，可以使用以下代码写入数据，会自动创建数据表：
df = spark.createDataFrame([(1, "alice", "20220412"), (2, "bob", "20220412")], ["id", "name", "date"])
df.show()
df.write.format("orc").mode("overwrite").partitionBy("date").saveAsTable("t]]></description><category></category></item><item><title><![CDATA[clickhouse--常用表引擎]]></title><link>https://blog.youkuaiyun.com/liuyingying0418/article/details/121547844</link><guid>https://blog.youkuaiyun.com/liuyingying0418/article/details/121547844</guid><author>liuyingying0418</author><pubDate>Fri, 26 Nov 2021 21:01:19 +0800</pubDate><description><![CDATA[表引擎
MergeTree Family
MergeTree
特点
用于插入极大量的数据到一张表当中。数据可以以数据片段的形式一个接着一个的快速写入，数据片段在后台按照一定的规则进行合并。
建表语法
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
    name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [TTL expr1],
    name2 [type2] [DEF]]></description><category></category></item><item><title><![CDATA[clickhouse--物化视图]]></title><link>https://blog.youkuaiyun.com/liuyingying0418/article/details/121365328</link><guid>https://blog.youkuaiyun.com/liuyingying0418/article/details/121365328</guid><author>liuyingying0418</author><pubDate>Wed, 24 Nov 2021 00:00:38 +0800</pubDate><description><![CDATA[物化视图
物化视图是查询结果的持久化，可以理解为一张时刻在与计算的表，创建过程中用了一个特殊引擎。但是对 更新 与 删除 操作支持并不好，更像是个插入触发器。
概述
与普通视图的区别
普通视图仅仅保存查询语句，查询的时候还是从原表读取数据。物化视图是把查询的结果根据相应的引擎存入到了磁盘或内存中，对数据重新进行了组织，可以理解为完全的一张新表。
优缺点
优点：查询速度快
缺点：写入过程中消耗较多机器资源，比如带宽占满，存储增加等。本质是一个流式数据的使用场景，是累加式的技术，所以要用历史数据做去重、去核的分]]></description><category></category></item><item><title><![CDATA[clickhouse--开窗函数(window function)的用法]]></title><link>https://blog.youkuaiyun.com/liuyingying0418/article/details/120269624</link><guid>https://blog.youkuaiyun.com/liuyingying0418/article/details/120269624</guid><author>liuyingying0418</author><pubDate>Sun, 17 Oct 2021 23:48:51 +0800</pubDate><description><![CDATA[数据准备
CREATE TABLE employee_salary_1
(
month Date,
name String ,
department String,
salary UInt32
) ENGINE = MergeTree()
partition by month
ORDER BY month

INSERT INTO employee_salary_1 VALUES
('2020-01-01', 'Ali', 'Sales', 6000),
('2020-01-01', 'Bob', 'Sal]]></description><category></category></item><item><title><![CDATA[pyspark--Window Functions]]></title><link>https://blog.youkuaiyun.com/liuyingying0418/article/details/108025262</link><guid>https://blog.youkuaiyun.com/liuyingying0418/article/details/108025262</guid><author>liuyingying0418</author><pubDate>Sat, 15 Aug 2020 17:07:34 +0800</pubDate><description><![CDATA[文章目录1 Ranking functions1.1 row_number()1.2 rank()1.3 dense_rank()1.4 percent_rank()1.5 ntile()2 Analytic functions2.1 cume_dist()2.2 lag()2.3 lead()3 Aggregate Functions

参考链接：pyspark-window-functions
Window函数在实际业务场景中非常实用，用的好的话能避免很多浪费时间的计算。刚好最近看到一篇对Window讲]]></description><category></category></item><item><title><![CDATA[pyspark--Window 特定统计值所在行保留]]></title><link>https://blog.youkuaiyun.com/liuyingying0418/article/details/108021341</link><guid>https://blog.youkuaiyun.com/liuyingying0418/article/details/108021341</guid><author>liuyingying0418</author><pubDate>Sat, 15 Aug 2020 13:21:41 +0800</pubDate><description><![CDATA[假定有如下数据：
from pyspark.sql.window import Window
from pyspark.sql import functions as F

col_names = ["name", "date", "score"]
value = [
    ("Ali", "2020-01-01", 10.0),
    ("Ali", "2020-01-02", 15.0),
    ("Ali", "2020-01-03", 20.0),
    ("Ali", "2020-01-0]]></description><category></category></item><item><title><![CDATA[pyspark--Window不同分组窗的使用]]></title><link>https://blog.youkuaiyun.com/liuyingying0418/article/details/108021328</link><guid>https://blog.youkuaiyun.com/liuyingying0418/article/details/108021328</guid><author>liuyingying0418</author><pubDate>Sat, 15 Aug 2020 13:20:26 +0800</pubDate><description><![CDATA[参考链接：
spark-window-functions-rangebetween-dates
假设我们有以下数据：
from pyspark.sql import Row
from pyspark.sql.window import Window
from pyspark.sql.functions import mean, col

row = Row("name", "date", "score")
rdd = sc.parallelize([
    row("Ali", "2020-01-01".]]></description><category></category></item><item><title><![CDATA[pyspark--单词统计的简单例子]]></title><link>https://blog.youkuaiyun.com/liuyingying0418/article/details/108021244</link><guid>https://blog.youkuaiyun.com/liuyingying0418/article/details/108021244</guid><author>liuyingying0418</author><pubDate>Sat, 15 Aug 2020 13:13:01 +0800</pubDate><description><![CDATA[文章目录方法一 先聚合再统计方法二 先统计再聚合
假设我们有以下数据：
from pyspark.sql import functions as F

df = sc.parallelize([(1,["what", "sad", "to", "me"]),
                     (1,["what", "what", "does", "the"]),
                     (2,["at", "the", "oecd", "with"])]).toDF(["id",]]></description><category></category></item><item><title><![CDATA[pyspark--groupby条件聚合]]></title><link>https://blog.youkuaiyun.com/liuyingying0418/article/details/108021233</link><guid>https://blog.youkuaiyun.com/liuyingying0418/article/details/108021233</guid><author>liuyingying0418</author><pubDate>Sat, 15 Aug 2020 13:11:39 +0800</pubDate><description><![CDATA[文章目录条件聚合方法一条件聚合方法二
条件聚合方法一
假设我们有以下数据：
col_names = ["name", "date", "score"]
value = [
    ("Ali", "2020-01-01", 10.0),
    ("Ali", "2020-01-02", 15.0),
    ("Ali", "2020-01-03", 20.0),
    ("Ali", "2020-01-04", 25.0),
    ("Ali", "2020-01-05", 30.0),
    (]]></description><category></category></item><item><title><![CDATA[pyspark--groupby条件分组]]></title><link>https://blog.youkuaiyun.com/liuyingying0418/article/details/108021220</link><guid>https://blog.youkuaiyun.com/liuyingying0418/article/details/108021220</guid><author>liuyingying0418</author><pubDate>Sat, 15 Aug 2020 13:10:06 +0800</pubDate><description><![CDATA[一些情况下，我们需要将数据按照某种条件划分，一部分满足条件的进行分析，另一部分不满足条件的划分为另一组进行分析。
假设我们有如下数据：
from pyspark.sql import Row, functions as F

col_names = ["name", "score"]
value = [
    ("Red", 100.0),
    ("Origen", 80.0),
    ("Yellow", 55.0),
    ("Green", 90.0),
    ("Cyan", 85.0)]]></description><category></category></item><item><title><![CDATA[pyspark--groupby同类型多列聚合]]></title><link>https://blog.youkuaiyun.com/liuyingying0418/article/details/108021182</link><guid>https://blog.youkuaiyun.com/liuyingying0418/article/details/108021182</guid><author>liuyingying0418</author><pubDate>Sat, 15 Aug 2020 13:07:39 +0800</pubDate><description><![CDATA[业务场景中，我们可能会碰到这样的情况：每一条数据有好几个列都是数值，比如不同科目的分数。而我们需要计算每一个数值列的最大值、最小值、标准差、方差之类的。这种情况下，如果在使用groupby分组聚合的时候，依次去对每一列进行聚合，就会导致写了非常多重复的代码。例如：
df.groupby("name").agg(F.stddev("val1"),F.stddev("val2"),F.stddev("val3")).show()
如果需要计算的维度特别多就会导致代码很长，而且多了很多冗余的代码。而将同类型的聚合]]></description><category></category></item></channel></rss>