Hive анализирует функции на основе определяемых пользователем функций, функций отражения и оконных функций.
Hive анализирует функции на основе определяемых пользователем функций, функций отражения и оконных функций.

Hive разделен на следующие три типа в соответствии с определяемыми пользователем категориями функций:

(1)UDF(User-Defined-Function)

Один вход и один выход

(2)UDAF(User-Defined Aggregation Function)

Функция агрегирования, несколько входов и один выход

Похоже на: количество/макс/мин

(3)UDTF(User-Defined Table-Generating Functions)

Один вошел, многие вышли

нравиться Боковой вид исследовать()

1. lateral view 、explode、reflect

1) Используйте функцию разнесения, чтобы разделить данные полей Map и Array в таблице куста.

нуждаться

Формат данных теперь следующий

Язык кода:javascript
копировать
zhangsan child1,child2,child3,child4 k1:v1,k2:v2
lisi child5,child6,child7,child8 k3:v3,k4:v4

Используйте \t для разделения полей. Все дочерние элементы будут разделены на один столбец.

Язык кода:javascript
копировать
+----------+--+
| mychild|
+----------+--+
| child1|
| child2|
| child3|
| child4|
| child5|
| child6|
| child7|
| child8|
+----------+--+

Также разделите ключ и значение карты, что приведет к следующему результату:

Язык кода:javascript
копировать
+----------------+-------------------+-- +
| mymapkey| mymapvalue  |
+----------------+-------------------+-- +
| k1 | v1                     |
| k2 | v2                     |
| k3 | v3                     |
| k4 | v4                     |
+----------------+-------------------+-- +

выполнить

Создать базу данных улья

Язык кода:javascript
копировать
hive (demo)> CREATE table demo1(
name STRING,
children array <STRING>,
address Map <STRING,STRING>)
row format delimited fields terminated by '\t'
collection items terminated by ','
map keys terminated by ':'
stored as textFile;

Загрузить данные

Выполните следующую команду, чтобы создать файл данных таблицы.

Язык кода:javascript
копировать
#mkdir -p /export/servers/hivedatas/
#cd /export/servers/hivedatas/
#gedit maparray
Язык кода:javascript
копировать
zhangsan child1,child2,child3,child4 k1:v1,k2:v2
lisi child5,child6,child7,child8 k3:v3,k4:v4

hiveсреди столов Загрузить данные

Язык кода:javascript
копировать
hive (demo)> LOAD DATA LOCAL INPATH '/home/jerry/hive/demo1' INTO TABLE demo1;

Используйте разнесение, чтобы разделить данные в улье

Разделить данные в массиве

Язык кода:javascript
копировать
hive (demo)> SELECT explode(children) AS myChild FROM demo1;
mychild
child1
child2
child3
child4
child5
child6
child7
child8
Time taken: 1.187 seconds, Fetched: 8
row(s)

Разделить данные на карте

Язык кода:javascript
копировать
hive(demo)> SELECT explode(address) AS (myMapKey, myMapValue) FROM demo1;
mymapkey mymapvalue
k1 v1
k2 v2
k3 v3
k4 v4
Time taken: 0.117 seconds, Fetched: 4
row(s)
hive (demo)>

2) Используйте взрыв, чтобы разделить строку json.

нуждаться

Теперь существуют следующие форматы данных:

Язык кода:javascript
копировать
a:shandong,b:beijing,c:hebei|1,2,3,4,5,6,7,8,9|[{"source":"7fresh","monthSales":4900,"userCount":1900,"score":"9.9"},{"source":"jd","monthSales":2090,"userCount":78981,"score":"9.8"},{"source":"jdmart","monthSales":6987,"userCount":1600,"score":"9.0"}]

Разделитель между полями |

Нам нужно проанализировать и получить значения, соответствующие всем месячным продажам, в виде следующего столбца (строка в столбец)

Язык кода:javascript
копировать
7fresh 4900      1900      9.9
jd        2090      78981    9.8
jdmart 6987      1600      9.0

выполнить

Создать таблицу улья

Язык кода:javascript
копировать
hive(demo)> CREATE TABLEdemo2(
area STRING,
goods_id STRING,
sale_info STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|'
STORED AS textfile;

Подготовьте данныеи Загрузить данные

Язык кода:javascript
копировать
#cd /export/servers/hivedatas
#gedit explode_json
Язык кода:javascript
копировать
a:shandong,b:beijing,c:hebei|1,2,3,4,5,6,7,8,9|[{"source":"7fresh","monthSales":4900,"userCount":1900,"score":"9.9"},{"source":"jd","monthSales":2090,"userCount":78981,"score":"9.8"},{"source":"jdmart","monthSales":6987,"userCount":1600,"score":"9.0"}]

Загрузить данныеприезжатьhiveсреди столов

Язык кода:javascript
копировать
hive(demo)> LOAD DATA LOCAL INPATH '/home/jerry/hive/demo2' OVERWRITE INTO TABLE demo2;

Разделить массив с помощью разнесения

Язык кода:javascript
копировать
hive(demo)> SELECT explode(split(goods_id,',')) as goods_id FROM demo2;
OK
goods_id
1
2
3
4
5
6
7
8
9
Time taken: 0.087 seconds, Fetched: 9
row(s)

Используйте взрыв, чтобы разобрать карту.

Язык кода:javascript
копировать
hive (demo)> SELECT explode(split(area,',')) as area FROM demo2;
OK
area
a:shandong
b:beijing
c:hebei
Time taken: 0.077 seconds, Fetched: 3
row(s)

Распаковать поля JSON

Язык кода:javascript
копировать
hive (demo)> SELECT explode(split(regexp_replace(regexp_replace(sale_info,'\\[\\{',''),'}]',''),'},\\{')) as sale_info FROM demo2;
sale_info
"source":"7fresh","monthSales":4900,"userCount":1900,"score":"9.9"
"source":"jd","monthSales":2090,"userCount":78981,"score":"9.8"
"source":"jdmart","monthSales":6987,"userCount":1600,"score":"9.0"
Time taken: 0.082 seconds, Fetched: 3
row(s)

Затем используйте get_json_object, чтобы получить данные с ключевыми месяцами продаж.

Язык кода:javascript
копировать
hive (demo)> SELECT get_json_object(explode(split(regexp_replace(regexp_replace(sale_info,'\\[\\{',''),'}]',''),'},\\{')),'$.monthSales') as sale_info FROM demo2;
FAILED: SemanticException [Error 10081]:
UDTF's are not supported outside the SELECT clause, nor nested in expressions

Ошибка: SemanticException [ошибка 10081]: UDTF не поддерживаются вне предложения SELECT и не вложены в выражения.

UDTF (функция генерации таблиц (UDTF)) взорвать нельзя записать в другие функции

Если вы пишете так, вы хотите проверить два поля

Язык кода:javascript
копировать
SELECT explode(split(area,',')) as area,good_id FROM demo2;

Будет сообщено об ошибке FAILED: SemanticException 1:40 Только одно выражение в предложении SELECT поддерживается с помощью UDTF. Ошибка возле токена "good_id"

При использовании UDTF поддерживается только одно поле, поэтому должен появиться LATERAL VIEW.

3) Используйте с БОКОВЫМ ВИДОМ.

Запрос нескольких полей с видом сбоку

Язык кода:javascript
копировать
hive (demo)> SELECT goods_id2,sale_info FROM demo2 LATERAL VIEW explode(split(goods_id,',')) goods as goods_id2; 
goods_id2 sale_info
1[{"source":"7fresh","monthSales":4900,"userCount":1900,"score":"9.9"},{"source":"jd","monthSales":2090,"userCount":78981,"score":"9.8"},{"source":"jdmart","monthSales":6987,"userCount":1600,"score":"9.0"}]
2[{"source":"7fresh","monthSales":4900,"userCount":1900,"score":"9.9"},{"source":"jd","monthSales":2090,"userCount":78981,"score":"9.8"},{"source":"jdmart","monthSales":6987,"userCount":1600,"score":"9.0"}]
3[{"source":"7fresh","monthSales":4900,"userCount":1900,"score":"9.9"},{"source":"jd","monthSales":2090,"userCount":78981,"score":"9.8"},{"source":"jdmart","monthSales":6987,"userCount":1600,"score":"9.0"}]
4[{"source":"7fresh","monthSales":4900,"userCount":1900,"score":"9.9"},{"source":"jd","monthSales":2090,"userCount":78981,"score":"9.8"},{"source":"jdmart","monthSales":6987,"userCount":1600,"score":"9.0"}]
5[{"source":"7fresh","monthSales":4900,"userCount":1900,"score":"9.9"},{"source":"jd","monthSales":2090,"userCount":78981,"score":"9.8"},{"source":"jdmart","monthSales":6987,"userCount":1600,"score":"9.0"}]
6[{"source":"7fresh","monthSales":4900,"userCount":1900,"score":"9.9"},{"source":"jd","monthSales":2090,"userCount":78981,"score":"9.8"},{"source":"jdmart","monthSales":6987,"userCount":1600,"score":"9.0"}]
7[{"source":"7fresh","monthSales":4900,"userCount":1900,"score":"9.9"},{"source":"jd","monthSales":2090,"userCount":78981,"score":"9.8"},{"source":"jdmart","monthSales":6987,"userCount":1600,"score":"9.0"}]
8[{"source":"7fresh","monthSales":4900,"userCount":1900,"score":"9.9"},{"source":"jd","monthSales":2090,"userCount":78981,"score":"9.8"},{"source":"jdmart","monthSales":6987,"userCount":1600,"score":"9.0"}]
9[{"source":"7fresh","monthSales":4900,"userCount":1900,"score":"9.9"},{"source":"jd","monthSales":2090,"userCount":78981,"score":"9.8"},{"source":"jdmart","monthSales":6987,"userCount":1600,"score":"9.0"}]
Time taken: 0.075 seconds, Fetched: 9
row(s)

Среди них LATERAL VIEW взрыв(сплит(товар_ид,','))товары эквивалентны виртуальной таблице, которая связана с декартовым произведением исходной таблицы взрыв_латеральный_вид.

Также можно использовать несколько раз

Язык кода:javascript
копировать
hive (demo)> SELECT goods_id2,sale_info,area2 FROM demo2
LATERAL VIEW explode(split(goods_id,','))goods as goods_id2
LATERAL VIEW explode(split(area,',')) areaas area2;
goods_id2 sale_info area2
1[{"source":"7fresh","monthSales":4900,"userCount":1900,"score":"9.9"},{"source":"jd","monthSales":2090,"userCount":78981,"score":"9.8"},{"source":"jdmart","monthSales":6987,"userCount":1600,"score":"9.0"}] a:shandong
1[{"source":"7fresh","monthSales":4900,"userCount":1900,"score":"9.9"},{"source":"jd","monthSales":2090,"userCount":78981,"score":"9.8"},{"source":"jdmart","monthSales":6987,"userCount":1600,"score":"9.0"}] b:beijing
1[{"source":"7fresh","monthSales":4900,"userCount":1900,"score":"9.9"},{"source":"jd","monthSales":2090,"userCount":78981,"score":"9.8"},{"source":"jdmart","monthSales":6987,"userCount":1600,"score":"9.0"}] c:hebei
9[{"source":"7fresh","monthSales":4900,"userCount":1900,"score":"9.9"},{"source":"jd","monthSales":2090,"userCount":78981,"score":"9.8"},{"source":"jdmart","monthSales":6987,"userCount":1600,"score":"9.0"}] c:hebei
Time taken: 0.052 seconds, Fetched: 27row(s)
hive (demo)> SELECT
get_json_object(concat('{',sale_info_1,'}'),'$.source') as source,
get_json_object(concat('{',sale_info_1,'}'),'$.monthSales')
as monthSales,
get_json_object(concat('{',sale_info_1,'}'),'$.userCount')
as monthSales,
get_json_object(concat('{',sale_info_1,'}'),'$.score')
as monthSales
FROM demo2
LATERAL VIEW
explode(split(regexp_replace(regexp_replace(sale_info,'\\[\\{',''),'}]',''),'},\\{'))sale_info
as sale_info_1;
OK
source monthsales    monthsales    monthsales
7fresh 4900      1900      9.9
jd 2090      78981    9.8
jdmart 6987      1600      9.0
Time taken: 0.05 seconds, Fetched: 3 row(s)

Наконец, мы можем полностью преобразовать эту строку данных в формате json в двумерную таблицу с помощью следующего предложения.

Язык кода:javascript
копировать
hive (hive_explode)> SELECT get_json_object(concat('{',sale_info_1,'}'),'$.source') as source,
get_json_object(concat('{',sale_info_1,'}'),'$.monthSales') as monthSales,
get_json_object(concat('{',sale_info_1,'}'),'$.userCount') as monthSales,
get_json_object(concat('{',sale_info_1,'}'),'$.score') as monthSales 
FROM demo2 
LATERAL VIEW explode(split(regexp_replace(regexp_replace(sale_info,'\\[\\{',''),'}]',''),'},\\{'))sale_info as sale_info_1;
OK
source  monthsales  monthsales  monthsales
7fresh  4900  1900  9.9
jd  2090  78981  9.8
jdmart  6987  1600  9.0
Time taken: 0.05 seconds, Fetched: 3 row(s)

3) Строка в столбец

Описание связанного параметра

  • CONCAT(string A/col, string B/col…):обратный вводнить Результат после подключения,Поддержка любого количества входов;
  • CONCAT_WS(separator, str1, str2,...):это особая форма КОНКАТ(). Разделитель между остальными параметрами первого параметра. Разделитель может быть таким же, как и остальные параметры. Если разделитель NULL, возвращаемое значение также будет НУЛЕВОЙ. Эта функция пропустит любой следующий параметр-разделитель. NULL И пусто нить. Между объединенными нитью будут добавлены разделители;
  • COLLECT_SET(col):функция Принимайте только базовыеданныетип,Его основная функция — дедупликация и суммирование значений определенного поля.,Создайте поля типа массива.

нуждаться

name

constellation

blood_type

Сунь Укун

Овен

A

Лао Ван

Стрелец

A

Песня Песня

Овен

B

Чжу Бацзе

Овен

A

Сестра Фэн

Стрелец

A

Сгруппируйте людей одного знака зодиака и группы крови. Результат следующий:

Язык кода:javascript
копировать
Стрелец,A            Лао Ван|Сестра Фэн
Овен,A            Сунь Укун|Чжу Бацзе
Овен,B            Песня Песня

Создайте локальный файл constellation.txt и импортируйте данные.

Выполните следующую команду, чтобы создать файл. Обратите внимание, что данные разделяются с помощью \t.

Язык кода:javascript
копировать
#cd /export/servers/hivedatas
#gedit demo3
Язык кода:javascript
копировать
Сунь Укун Овен A
Лао Ван Стрелец A
Песня Песня Овен B       
Чжу Бацзе Овен A
Сестра Фэн Стрелец A

Создать таблицу ульяи Загрузить данные

Язык кода:javascript
копировать
hive (demo)> CREATE TABLE demo3(name STRING,constellation STRING,blood_type STRING)row format delimited fields terminated by ",";

Загрузить данныеhive (demo)> LOAD DATA LOCAL INPATH '/home/jerry/hive/demo3' INTO TABLE demo3;

в соответствии снуждаться Запросданные

Язык кода:javascript
копировать
hive (demo)> SELECT t1.base,concat_ws('|', collect_set(t1.name)) name FROM (SELECT
name,concat(constellation, "," , blood_type) base FROM demo3) t1
GROUP BY t1.base;
OK
t1.base name
Стрелец,A       Лао Ван|Сестра Фэн
Овен,A       Сунь Укун|Чжу Бацзе
Овен,B       Песня Песня
Time taken: 2.179 seconds, Fetched: 3
row(s)

4) Перенос колонки

Требуемые функции:

  • EPLODE(col):Преобразовать столбец в файле в комплексныйarrayилиmapСтруктура разбита на несколько строк。

LATERAL VIEW

использование:

Язык кода:javascript
копировать
hive> LATERAL VIEW udtf(expression) tableAlias AS columnAlias

Объяснение: используется с разделением, разнесением и другими UDTF. Он может разделить столбец данных на несколько строк данных. На этой основе разделенные данные можно агрегировать.

нуждаться

Язык кода:javascript
копировать
#cd /export/servers/hivedatas
#gedit movie.txt
Язык кода:javascript
копировать
«Отслеживание подозреваемых» саспенс, боевик, научная фантастика, драма
《Lie to me》 Саспенс, полиция и грабители, боевик, психология, драма
«Воин-Волк 2» война, действие, катастрофа
Используйте \t для разделения полей данных.
Разверните массив данных в категории фильмов. Результат следующий:
«Отслеживание подозреваемых» ожидание
«Отслеживание подозреваемых» действие
«Отслеживание подозреваемых» научная фантастика
«Отслеживание подозреваемых» сюжет
《Lie to me》 ожидание
《Lie to me》 Полицейские и грабители
《Lie to me》 действие
《Lie to me》 психология
《Lie to me》 сюжет
«Воин-Волк 2» война
«Воин-Волк 2» действие
«Воин-Волк 2» катастрофа

Создать таблицу данных

Язык кода:javascript
копировать
hive (demo)> create table movie_info(
movie STRING,
category array<STRING>)
row format delimited fields terminated by
"\t"
collection items terminated by
",";

Загрузить данные

Язык кода:javascript
копировать
hive (demo)> LOAD DATA LOCALINPATH"/home/jerry/hive/movie" INTO TABLE movie_info;

в соответствии снуждаться Запросданные

Язык кода:javascript
копировать
hive (demo)> SELECT movie,category_name
FROM movie_info lateral view explode(category) table_tmp as category_name;
movie category_name
«Отслеживание подозреваемых»      ожидание
«Отслеживание подозреваемых»      действие
«Отслеживание подозреваемых»      научная фантастика
«Отслеживание подозреваемых»      сюжет
《Lie to me》       ожидание
《Lie to me》       Полицейские и грабители
《Lie to me》       действие
《Lie to me》       психология
《Lie to me》       сюжет
«Воин-Волк 2»    война
«Воин-Волк 2»    действие
«Воин-Волк 2»    катастрофа
Time taken: 0.05 seconds, Fetched: 12
row(s)

5) отражающая функция

отражающая функция может поддерживать вызов встроенной функции Java в SQL, уничтожая все udf-функции за секунды.

нуждаться1: Используйте Max в java.lang.Math, чтобы найти максимальное значение в двух столбцах.

Создать таблицу улья

Язык кода:javascript
копировать
hive (demo)> CREATE TABLE test_udf(col1 int,col2 int) row format delimited fields terminated by ',';

Подготовьте данныеи Загрузить данные

Язык кода:javascript
копировать
#cd /home/jerry/hive/
#gedit test_udf
Язык кода:javascript
копировать
1,2
4,3
6,4
7,5
5,6

Загрузить данные

Язык кода:javascript
копировать
hive (demo)> LOAD DATA LOCAL INPATH '/home/jerry/hive/test_udf' OVERWRITE INTO TABLE test_udf;

Выполнить запрос

Язык кода:javascript
копировать
hive (demo)> SELECT reflect("java.lang.Math","max",col1,col2) FROM test_udf;
_c0
2
4
6
7
6
Time taken: 0.075 seconds, Fetched: 5
row(s)

нуждаться2: Разные записи в файле выполняют разные встроенные функции Java.

выполнитьшаг:

Создать таблицу улья

Язык кода:javascript
копировать
hive (demo)> CREATE TABLE test_udf2(class_name STRING,method_name STRING,col1 int , col2 int) row format delimited fields terminated by ',';

Подготовьте данные

Язык кода:javascript
копировать
#cd /home/jerry/hive
#gedit test_udf2
Язык кода:javascript
копировать
java.lang.Math,min,1,2
java.lang.Math,max,2,3

Загрузить данные

Язык кода:javascript
копировать
hive (demo)> LOAD DATA LOCAL INPAT '/home/jerry/hive/test_udf2' OVERWRITE INTO TABLE test_udf2;

Выполнить запрос

Язык кода:javascript
копировать
hive (demo)> SELECT reflect(class_name,method_name,col1,col2) FROM test_udf2;
OK
_c0
1
3
Time taken: 0.072 seconds, Fetched: 2row(s)

2 оконные функции

1) Оконные функции SUM(), AVG(), MIN(), MAX()

Создать таблицу данныхзаявление

Язык кода:javascript
копировать
hive>CREATE table demo4 (
cookieid string,
creatrtime string, --day
pv int
) row format delimited
fields terminated by ',';

Подготовьте данные

Язык кода:javascript
копировать
cookie1,2024-04-10,1
cookie1,2024-04-11,5
cookie1,2024-04-12,7
cookie1,2024-04-13,3
cookie1,2024-04-14,2
cookie1,2024-04-15,4
cookie1,2024-04-16,4

Загрузить данные

Язык кода:javascript
копировать
hive>LOAD DATA LOCAL INPATH'/home/jerry/hive/demo4' into table demo4;

Включите умный локальный режим

Язык кода:javascript
копировать
hive>set hive.exec.mode.local.auto=true;

Совместное использование функции SUM() и оконной функции: результат связан с ORDER BY, а по умолчанию используется возрастающий порядок.

Язык кода:javascript
копировать
hive>SELECT
cookieid,createtime,pv,sum(pv) over(PARTITION BY cookieid ORDER BY createtime)
as pv1 FROM demo4;
OK
cookieid createtime pv   pv1
cookie1 2024-04-10  1     1
cookie1 2024-04-11  5     6
cookie1 2024-04-12  7     13
cookie1 2024-04-13  3     16
cookie1 2024-04-14  2     18
cookie1 2024-04-15  4     22
cookie1 2024-04-16  4     26
Time taken: 1.444 seconds, Fetched: 7row(s)

pv1: накопленное pv в группе от начальной точки до текущей строки. Например, pv1 11-го числа = pv 10-го числа + pv 11-го числа, а 12-го = 10-го + 11-го + 12-го.

Язык кода:javascript
копировать
hive>SELECT cookieid,createtime,pv,
sum(pv) over(PARTITION BY cookieid ORDER BY
createtime ROWS BETWEEN unbounded preceding and current row) as pv2
FROM demo4;
OK
cookieid createtime pv   pv2
cookie1 2024-04-10  1     1
cookie1 2024-04-11  5     6
cookie1 2024-04-12  7     13
cookie1 2024-04-13  3     16
cookie1 2024-04-14  2     18
cookie1 2024-04-15  4     22
cookie1 2024-04-16  4     26
Time taken: 3.307 seconds, Fetched: 7row(s)

пв2: тот же пв1

Язык кода:javascript
копировать
hive>SELECT
cookieid,createtime,pv,sum(pv) over(PARTITION BY cookieid) as pv3 FROM demo4;
OK
cookieid createtime pv   pv3
cookie1 2024-04-16  4     26
cookie1 2024-04-15  4     26
cookie1 2024-04-14  2     26
cookie1 2024-04-13  3     26
cookie1 2024-04-12  7     26
cookie1 2024-04-11  5     26
cookie1 2024-04-10  1     26
Time taken: 1.333 seconds, Fetched: 7row(s)

pv3: собрать все pv в группе (cookie1).

Язык кода:javascript
копировать
hive>SELECT cookieid,createtime,pv,
sum(pv) over(PARTITION BY cookieid ORDER BY
createtime ROWS BETWEEN 3 preceding and current row) as pv4
FROM demo4;
OK
cookieid createtime pv   pv4
cookie1 2024-04-10  1     1
cookie1 2024-04-11  5     6
cookie1 2024-04-12  7     13
cookie1 2024-04-13  3     16
cookie1 2024-04-14  2     17
cookie1 2024-04-15  4     16
cookie1 2024-04-16  4     13
Time taken: 1.409 seconds, Fetched: 7row(s)

pv4: текущая строка в группе + предыдущие 3 строки, например, 11-й день = 10-й день + 11-й день, 12-й день = 10-й день + 11-й день + 12-й день, 13-й день = 10-й день + 11-й день + 12-й день + 13-й день, 14-й = 11-й + 12-й + 13-й + 14-й

Язык кода:javascript
копировать
hive>SELECT cookieid,createtime,pv,
sum(pv) over(PARTITION BY cookieid ORDER BY
createtime ROWS BETWEEN 3 preceding and 1 following) as pv5
FROM demo4;
OK
cookieid createtime pv   pv5
cookie1 2024-04-10  1     6
cookie1 2024-04-11  5     13
cookie1 2024-04-12  7     16
cookie1 2024-04-13  3     18
cookie1 2024-04-14  2     21
cookie1 2024-04-15  4     20
cookie1 2024-04-16  4     13
Time taken: 1.476 seconds, Fetched: 7row(s)

pv5: текущая строка в группе + 3 строки вперед + 1 строка позади, например, 14-й день = 11-й день + 12-й день + 13-й день + 14-й день + 15-й день = 5+7+3+2+4=21.

Язык кода:javascript
копировать
hive>SELECT cookieid,createtime,pv,
sum(pv) over(PARTITION BY cookieid ORDER BY
createtime ROWS BETWEEN current row and unbounded following) as pv6
FROM demo4;
cookieid createtime pv   pv6
cookie1 2024-04-10  1     26
cookie1 2024-04-11  5     25
cookie1 2024-04-12  7     20
cookie1 2024-04-13  3     13
cookie1 2024-04-14  2     10
cookie1 2024-04-15  4     8
cookie1 2024-04-16  4     4
Time taken: 1.408 seconds, Fetched: 7
row(s)

pv6: текущая строка + все последующие строки в группе, например, 13-й день = 13-й день + 14-й день + 15-й день + 16-й день = 3+2+4+4=13, 14-й день = 14-й день + 15-й день + 16-й день =2+4+4=10.

иллюстрировать

  • Если ROWS BETWEEN не указан, значение по умолчанию — от начальной точки до текущей строки;
  • Если ORDER BY не указан, все значения в группе будут суммироваться.

Главное — понять значение ROWS BETWEEN, также называемого предложением окна:

  • предыдущий: вперед
  • следующее: идти вперед
  • текущая строка: текущая строка
  • неограниченно: отправная точка
  • неограниченное предшествующее означает начало с предыдущей точки
  • неограниченное следующее: указывает конечную точку позади

AVG(), MIN(), MAX() и SUM() используются одинаково.

2) Оконные функции ROW_NUMBER(), RANK(), DENSE_RANK(), NTILE()

Подготовьте данные

Язык кода:javascript
копировать
cookie1,2024-04-10,1
cookie1,2024-04-11,5
cookie1,2024-04-12,7
cookie1,2024-04-13,3
cookie1,2024-04-14,2
cookie1,2024-04-15,4
cookie1,2024-04-16,4
cookie2,2024-04-10,2
cookie2,2024-04-11,3
cookie2,2024-04-12,5
cookie2,2024-04-13,6
cookie2,2024-04-14,3
cookie2,2024-04-15,9
cookie2,2024-04-16,7

Создать таблицу данных

Язык кода:javascript
копировать
hive>CREATE TABLE demo5 (
cookieid STRING,
createtime STRING, --day
pv INT
) ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
stored as textfile;

Загрузить данные:

Язык кода:javascript
копировать
hive>LOAD DATA LOCAL INPATH '/home/jerry/hive/demo5' INTO TABLE demo5; 

ROW_NUMBER()использовать

ROW_NUMBER() начинается с 1 и генерирует последовательность записей в группе по порядку.

Язык кода:javascript
копировать
hive>SELECT cookieid,createtime,pv,ROW_NUMBER() OVER(PARTITON BYcookieid ORDER BYpv desc) AS rn FROM demo5;
cookieid createtime pv   rn
cookie1 2024-04-12  7     1
cookie1 2024-04-11  5     2
cookie1 2024-04-16  4     3
cookie1 2024-04-15  4     4
cookie1 2024-04-13  3     5
cookie1 2024-04-14  2     6
cookie1 2024-04-10  1     7
cookie2 2024-04-15  9     1
cookie2 2024-04-16  7     2
cookie2 2024-04-13  6     3
cookie2 2024-04-12  5     4
cookie2 2024-04-11  3     5
cookie2 2024-04-14  3     6
cookie2 2024-04-10  2     7
Time taken: 2.968 seconds, Fetched: 14row(s)

RANK() Используйте с DENSE_RANK()

RANK() генерирует рейтинг элементов данных в группе. Если рейтинги равны, в рейтинге останется вакансия.

DENSE_RANK() генерирует рейтинг элементов данных в группе. Если рейтинги равны, разрывов в рейтингах не будет.

Язык кода:javascript
копировать
hive>SELECT
cookieid,createtime,pv,RANK() OVER(PARTITON BYcookieid ORDER BYpv desc) AS
rn1,DENSE_RANK() OVER(PARTITON BYcookieid ORDER BYpv desc) AS rn2,ROW_NUMBER()
OVER(PARTITON BYcookieid ORDER BYpv DESC) AS rn3 FROM demo5 WHERE cookieid =
'cookie1';
OK
cookieid createtime pv   rn1  rn2  rn3
cookie1 2024-04-12  7     1     1     1
cookie1 2024-04-11  5     2     2     2
cookie1 2024-04-16  4     3     3     3
cookie1 2024-04-15  4     3     3     4
cookie1 2024-04-13  3     5     4     5
cookie1 2024-04-14  2     6     5     6
cookie1 2024-04-10  1     7     6     7
Time taken: 3.388 seconds, Fetched: 7
row(s)

НТИЛЕ использование

Иногда возникает такая нуждаться: если данные отсортированы и разделены на три части.,Деловых людей волнует только часть этого,Как вынуть среднюю треть данных NTILEфункции достаточно?

NTILE можно рассматривать как равномерное распределение упорядоченного набора данных по заданному числу сегментов и присвоение номера сегмента каждой строке. Если его невозможно распределить равномерно, сначала будут выделены сегменты с меньшими номерами, а количество строк, которые можно поместить в каждый блок, будет отличаться не более чем на 1.

Затем вы можете выбрать первое или последнее n-е количество данных на основе номера сегмента. Данные будут отображаться полностью, и только соответствующие данные будут помечены конкретно, какую часть данных необходимо получить, и ее нужно вложить на один слой дальше и получить на основе меток.

Язык кода:javascript
копировать
hive>SELECT cookieid, hive>SELECT cookieid, createtime,pv,
NTILE(2) OVER(PARTITON BY cookieid ORDER BY
createtime) AS rn1,
NTILE(3) OVER(PARTITON BY cookieid ORDER BY
createtime) AS rn2,
NTILE(4) OVER(ORDER BY createtime) AS rn3
FROM demo5
ORDER BY cookieid,createtime;
OK
cookieid createtime pv   rn1  rn2  rn3
cookie1 2024-04-10  1     1     1     1
cookie1 2024-04-11  5     1     1     1
cookie1 2024-04-12  7     1     1     2
cookie1 2024-04-13  3     1     2     2
cookie1 2024-04-14  2     2     2     3
cookie1 2024-04-15  4     2     3     4
cookie1 2024-04-16  4     2     3     4
cookie2 2024-04-10  2     1     1     1
cookie2 2024-04-11  3     1     1     1
cookie2 2024-04-12  5     1     1     2
cookie2 2024-04-13  6     1     2     2
cookie2 2024-04-14  3     2     2     3
cookie2 2024-04-15  9     2     3     3
cookie2 2024-04-16  7     2     3     4
Time taken: 3.825 seconds, Fetched: 14row(s)

использование LAG

LAG(col,n,DEFAULT) используется для подсчета значения n-й строки сверху в окне статистики. Первый параметр — это имя столбца, второй параметр — n-я строка сверху (необязательно, по умолчанию — 1). ), а третий параметр — значение по умолчанию (когда n-я строка равна NULL, берется значение по умолчанию, если не указано, оно равно NULL)

Язык кода:javascript
копировать
hive>SELECT cookieid,createtime,
ROW_NUMBER() OVER(PARTITON BYcookieid ORDER
BYcreatetime) AS rn,
LAG(createtime,1,'1970-01-01 00:00:00')
OVER(PARTITON BYcookieid ORDER BYcreatetime) AS last_1_time,
LAG(createtime,2) OVER(PARTITON BYcookieid
ORDER BYcreatetime) AS last_2_time
FROM demo5;
cookieid createtime rn    last_1_time           last_2_time
cookie1 2024-04-10  1     1970-01-0100:00:00  NULL
cookie1 2024-04-11  2     2024-04-10         NULL
cookie1 2024-04-12  3     2024-04-11         2024-04-10
cookie1 2024-04-13  4     2024-04-12         2024-04-11
cookie1 2024-04-14  5     2024-04-13         2024-04-12
cookie1 2024-04-15  6     2024-04-14         2024-04-13
cookie1 2024-04-16  7     2024-04-15         2024-04-14
cookie2 2024-04-10  1     1970-01-0100:00:00  NULL
cookie2 2024-04-11  2     2024-04-10         NULL
cookie2 2024-04-12  3     2024-04-11         2024-04-10
cookie2 2024-04-13  4     2024-04-12         2024-04-11
cookie2 2024-04-14  5     2024-04-13         2024-04-12
cookie2 2024-04-15  6     2024-04-14         2024-04-13
cookie2 2024-04-16  7     2024-04-15         2024-04-14
Time taken: 1.497 seconds, Fetched: 14row(s)

3) Функция окна: LAG(),LEAD(),FIRST_VALUE(),LAST_VALUE()

Last_1_time: указывает значение первой строки, значение по умолчанию — «1970-01-01 00:00:00».

Первая строка файла cookie1 и строка выше имеют значение NULL, поэтому значение по умолчанию — 1970-01-01 00:00:00.

Третья строка файла cookie1, значение на одну строку выше — это значение второй строки, 10 апреля 2015 г., 10:00:02.

Шестая строка файла cookie1, значение на одну строку выше — это значение пятой строки, 10 апреля 2015 г., 10:50:01.

Last_2_time: указывает значение второй строки выше и указывает значение по умолчанию.

Первая строка файла cookie1, следующие две строки имеют значение NULL.

Вторая строка файла cookie1, две верхние строки имеют значение NULL.

Четвертая строка файла cookie1, значение второй строки на 2 строки выше, 10 апреля 2015 г. 10:00:02

Седьмая строка cookie1, значение пятой строки на 2 строки выше, 10 апреля 2015 г. 10:50:0

LEAD

В отличие от LAG, LEAD(col,n,DEFAULT) используется для подсчета значения n-й строки снизу в окне статистики. Первый параметр — это имя столбца, а второй параметр — n-я строка снизу (. необязательно, по умолчанию — 1). Эти три параметра являются значениями по умолчанию (когда n-я строка вниз равна NULL, берется значение по умолчанию, если не указано, оно равно NULL)

Язык кода:javascript
копировать
hive>SELECT cookieid,createtime,
ROW_NUMBER() OVER(PARTITON BY cookieid ORDER BY createtime) AS rn,
LEAD(createtime,1,'1970-01-01 00:00:00')
OVER(PARTITON BY cookieid ORDER BY createtime) AS next_1_time,
LEAD(createtime,2) OVER(PARTITON BY
cookieid ORDER BY createtime) AS next_2_time
FROM demo5;
cookieid createtime rn    next_1_time   next_2_time
cookie1 2024-04-10  1     2024-04-11  2024-04-12
cookie1 2024-04-11  2     2024-04-12  2024-04-13
cookie1 2024-04-12  3     2024-04-13  2024-04-14
cookie1 2024-04-13  4     2024-04-14  2024-04-15
cookie1 2024-04-14  5     2024-04-15  2024-04-16
cookie1 2024-04-15  6     2024-04-16  NULL
cookie1 2024-04-16  7     1970-01-0100:00:00  NULL
cookie2 2024-04-10  1     2024-04-11  2024-04-12
cookie2 2024-04-11  2     2024-04-12  2024-04-13
cookie2 2024-04-12  3     2024-04-13  2024-04-14
cookie2 2024-04-13  4     2024-04-14  2024-04-15
cookie2 2024-04-14  5     2024-04-15  2024-04-16
cookie2 2024-04-15  6     2024-04-16  NULL
cookie2 2024-04-16  7     1970-01-0100:00:00  NULL
Time taken: 1.459 seconds, Fetched: 14row(s)

FIRST_VALUE

После сортировки внутри группы, заканчивающейся текущей строкой, первое значение

Язык кода:javascript
копировать
hive>SELECT cookieid,createtime,pv,
ROW_NUMBER() OVER(PARTITON BY cookieid
ORDER BY createtime) AS rn,
FIRST_VALUE(pv) OVER(PARTITON BY cookieid
ORDER BY createtime) AS first1
FROM demo5;
OK
cookieid createtime rn    first1
cookie1 2024-04-10  1     1
cookie1 2024-04-11  2     1
cookie1 2024-04-12  3     1
cookie1 2024-04-13  4     1
cookie1 2024-04-14  5     1
cookie1 2024-04-15  6     1
cookie1 2024-04-16  7     1
cookie2 2024-04-10  1     2
cookie2 2024-04-11  2     2
cookie2 2024-04-12  3     2
cookie2 2024-04-13  4     2
cookie2 2024-04-14  5     2
cookie2 2024-04-15  6     2
cookie2 2024-04-16  7     2
Time taken: 1.407 seconds, Fetched: 14row(s)

LAST_VALUE

После сортировки внутри группы завершите ее на текущей строке и последнем значении.

Язык кода:javascript
копировать
hive>SELECT cookieid,createtime,
ROW_NUMBER() OVER(PARTITION BY cookieid ORDER
BY createtime) AS rn,
LAST_VALUE(url) OVER(PARTITION BY cookieid ORDER
BY createtime) AS last1,
FIRST_VALUE(url) OVER(PARTITION BY cookieid
ORDER BY createtime DESC) AS last2
FROM demo5
ORDER BY cookieid,createtime;
OK
cookieid createtime rn    last1 last2
cookie1 2024-04-10  1     1     4
cookie1 2024-04-11  2     5     4
cookie1 2024-04-12  3     7     4
cookie1 2024-04-13  4     3     4
cookie1 2024-04-14  5     2     4
cookie1 2024-04-15  6     4     4
cookie1 2024-04-16  7     4     4
cookie2 2024-04-10  1     2     7
cookie2 2024-04-11  2     3     7
cookie2 2024-04-12  3     5     7
cookie2 2024-04-13  4     6     7
cookie2 2024-04-14  5     3     7
cookie2 2024-04-15  6     9     7
cookie2 2024-04-16  7     7     7
Time taken: 3.947 seconds, Fetched: 14row(s)

Если вы хотите получить последнее значение после сортировки в группе, вам нужно обойти это:

Язык кода:javascript
копировать
hive>SELECT cookieid,createtime,
ROW_NUMBER() OVER(PARTITION BY cookieid ORDER
BY createtime) AS rn,
LAST_VALUE(url) OVER(PARTITION BY cookieid ORDER
BY createtime) AS last1,
FIRST_VALUE(url) OVER(PARTITION BY cookieid
ORDER BY createtime DESC) AS last2
FROM demo5
ORDER BY cookieid,createtime;

особое вниманиеORDER BY

Если ORDER BY не указан, сортировка будет хаотичной и будут получены неправильные результаты.

Язык кода:javascript
копировать
hive>SELECT cookieid,createtime,
FIRST_VALUE(url) OVER(PARTITION BY
cookieid) AS first2
FROM demo5;
OK
cookieid createtime first2
cookie1 2024-04-10  1
cookie1 2024-04-16  1
cookie1 2024-04-15  1
cookie1 2024-04-14  1
cookie1 2024-04-13  1
cookie1 2024-04-12  1
cookie1 2024-04-11  1
cookie2 2024-04-16  7
cookie2 2024-04-15  7
cookie2 2024-04-14  7
cookie2 2024-04-13  7
cookie2 2024-04-12  7
cookie2 2024-04-11  7
cookie2 2024-04-10  7
Time taken: 1.405 seconds, Fetched: 14row(s)

4) Функция окна: CUME_DIST(), PERCENT_RANK()

Эти две функции анализа последовательности используются не очень часто. Примечание. Функция последовательности не поддерживает предложение WHERE.

Подготовка данных

Язык кода:javascript
копировать
d1,user1,1000
d1,user2,2000
d1,user3,3000
d2,user4,4000
d2,user5,5000
Язык кода:javascript
копировать
hive>CREATE EXTERNAL TABLE demo6(dept STRING,userid STRING,sal INT) ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
stored as textfile;

Загрузить данные:

Язык кода:javascript
копировать
hive>LOAD DATA LOCAL INPATH '/home/jerry/hive/demo6' INTO TABLE demo6;

CUME_DIST

CUME_DIST связан с порядком сортировки ORDER BY.

CUME_DIST Количество строк, меньшее или равное текущему значению/Общее количество строк в группе ORDER Порядок по умолчанию Положительный порядок Восходящий порядок, например: подсчет количества людей с зарплатой меньше или равной текущему значению, как доля от общего числа людей.

Язык кода:javascript
копировать
hive>SELECT dept,userid,sal,
CUME_DIST() OVER(ORDER BY sal) AS rn1,
CUME_DIST() OVER(PARTITION BY dept ORDER BY sal) AS rn2
FROM
demo6;
OK
dept userid sal   rn1  rn2
d1 user1      1000      0.2  0.3333333333333333
d1 user2      2000      0.4  0.6666666666666666
d1 user3      3000      0.6  1.0
d2 user4      4000      0.8  0.5
d2 user5      5000      1.0  1.0
Time taken: 2.571 seconds, Fetched: 5row(s)

r rn1: Раздела нет, все данные находятся в 1 группе, общее количество строк — 5.

Первая строка: количество строк меньше или равно 1000 равно 1, следовательно, 1/5 = 0,2.

Вторая строка: количество строк меньше или равно 2000 равно 2, следовательно, 2/5 = 0,4.

Третья строка: количество строк меньше или равное 3000 равно 3, следовательно, 3/5=0,6.

….

rn2: сгруппировано по отделам, количество строк в dpet=d1 равно 3,

Вторая строка: количество строк меньше или равно 1000 равно 1, следовательно, 1/3 = 0,33.

Вторая строка: количество строк меньше или равно 2000 равно 2, следовательно, 2/3 = 0,66.

5) Функция анализа: GROUPING SETS(), GROUPING__ID, CUBE,ROLLUP

Подготовка данных

Язык кода:javascript
копировать
2024-03,2024-03-10,cookie1
2024-03,2024-03-10,cookie5
2024-03,2024-03-12,cookie7
2024-04,2024-04-12,cookie3
2024-04,2024-04-13,cookie2
2024-04,2024-04-13,cookie4
2024-04,2024-04-16,cookie4
2024-03,2024-03-10,cookie2
2024-03,2024-03-10,cookie3
2024-04,2024-04-12,cookie5
2024-04,2024-04-13,cookie6
2024-04,2024-04-15,cookie3
2024-04,2024-04-15,cookie2
2024-04,2024-04-16,cookie1

Создать таблицу

Язык кода:javascript
копировать
hive>CREATE TABLE demo7 (
month STRING,
day STRING,
cookieid STRING
) ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
stored as textfile;

Загрузить данные:

Язык кода:javascript
копировать
hive>LOAD DATA LOCAL INPATH'/home/jerry/hive/demo7'
into table demo7;

GROUPING SETS

Наборы группировок — это удобный способ записи нескольких логик GROUP BY в одном операторе SQL.

Это эквивалентно UNION ALL наборов результатов GROUP BY разных размеров.

Язык кода:javascript
копировать
hive>SELECT month,day,
COUNT(DISTINCT cookieid) AS uv,
GROUPING_ID
FROM demo7
GROUP BY month,day
GROUPING SETS (month,day)
ORDER BY GROUPING_ID;

grouping_id указывает, к какому набору группировок принадлежит этот набор результатов.

В соответствии с условиями группировки месяца и дня в НАБОРАХ ГРУППЫ 1 представляет месяц, а 2 представляет день.

Эквивалентно

Язык кода:javascript
копировать
hive>SELECT month,NULL,COUNT(DISTINCT
cookieid) AS uv,1 AS GROUPING_ID
FROM demo7
GROUP BY month
UNION ALL
SELECT NULL as month,day,COUNT(DISTINCT
cookieid) AS uv,2 AS GROUPING_ID
FROM demo7
GROUP BY day;
Язык кода:javascript
копировать
hive>SELECT month,day,
COUNT(DISTINCT cookieid) AS uv,
GROUPING_ID
FROM demo7
GROUP BY month,day
GROUPING SETS (month,day,(month,day))
ORDER BY GROUPING_ID;

Эквивалентно

Язык кода:javascript
копировать
hive>SELECT month,NULL,COUNT(DISTINCT
cookieid) AS uv,1 AS GROUPING_ID FROM test_t5 GROUP BY month
UNION ALL
SELECT NULL,day,COUNT(DISTINCT cookieid) AS
uv,2 AS GROUPING_ID
FROM demo7 GROUP BY day
UNION ALL
SELECT month,day,COUNT(DISTINCT cookieid)
AS uv,3 AS GROUPING_ID
FROM demo7 GROUP BY month,day;

CUBE

Агрегирование на основе всех комбинаций измерений GROUP BY.

Язык кода:javascript
копировать
hive>SELECT month,day,
COUNT(DISTINCT cookieid) AS uv,
GROUPING_ID
FROM demo7
GROUP BY month,day
WITH CUBE
ORDER BY GROUPING_ID;
month day         uv   grouping__id
2024-03 2024-03-10 4     0
2024-04 2024-04-16 2     0
2024-04 2024-04-13 3     0
2024-04 2024-04-12 2     0
2024-04 2024-04-15 2     0
2024-03 2024-03-12 1     0
2024-03 NULL 5     1
2024-04 NULL 6     1
NULL 2024-04-16  2     2
NULL 2024-04-15  2     2
NULL 2024-04-13  3     2
NULL 2024-04-12  2     2
NULL 2024-03-12  1     2
NULL 2024-03-10  4     2
NULL NULL             7     3

Эквивалентно

Язык кода:javascript
копировать
hive>SELECT NULL,NULL,COUNT(DISTINCT
cookieid) AS uv,0 AS GROUPING_ID
FROM demo7
UNION ALL
SELECT month,NULL,COUNT(DISTINCT cookieid) AS uv,1 AS GROUPING_ID
FROM demo7
GROUP BY month
UNION ALL 
SELECT NULL,day,COUNT(DISTINCT cookieid) AS
uv,2 AS GROUPING_ID
FROM demo7 GROUP BY day
UNION ALL
SELECT month,day,COUNT(DISTINCT cookieid)
AS uv,3 AS GROUPING_ID
FROM demo7 GROUP BY month,day;

ROLLUP

Это подмножество CUBE, фокусирующееся на крайнем левом измерении и выполняющее иерархическую агрегацию из этого измерения.

Например, выполните иерархическое агрегирование, используя измерение месяца:

Язык кода:javascript
копировать
hive>SELECT month,day,
COUNT(DISTINCT cookieid) AS uv,
GROUPING_ID
FROM test_t5
GROUP BY month,day
WITH ROLLUP
ORDER BY GROUPING_ID;
month day  uv   grouping__id
2024-04 2024-04-16 2     0
2024-04 2024-04-15 2     0
2024-04 2024-04-13 3     0
2024-04 2024-04-12 2     0
2024-03 2024-03-12 1     0
2024-03 2024-03-10 4     0
2024-04 NULL 6     1
2024-03 NULL 5     1
NULL NULL      7     3
Time taken: 2.652 seconds, Fetched: 9
row(s)

Замените порядок месяца и дня и выполните иерархическое агрегирование, используя измерение дня:

Язык кода:javascript
копировать
hive>SELECT month,day,COUNT(DISTINCT
cookieid) AS uv,GROUPING__ID FROM demo7
GROUP BY month,day WITH ROLLUP  ORDER
BYGROUPING__ID;
month day  uv   grouping__id
2024-04 2024-04-16 2     0
2024-04 2024-04-15 2     0
2024-04 2024-04-13 3     0
2024-04 2024-04-12 2     0
2024-03 2024-03-12 1     0
2024-03 2024-03-10 4     0
2024-04 NULL 6     1
2024-03 NULL 5     1
NULL NULL      7     3
Time taken: 2.652 seconds, Fetched: 9
row(s)

Эквивалентно

Язык кода:javascript
копировать
hive>SELECT day,month,
COUNT(DISTINCT cookieid) AS uv,
GROUPING_ID
FROM test_t5
GROUP BY day,month
WITH ROLLUP
ORDER BY GROUPING_ID;

Здесь агрегирование по дню и месяцу дает тот же результат, что и агрегирование по дню. Из-за отношений родитель-потомок, если это комбинация других измерений, он будет другим.

Если порядок месяца и дня обратный, иерархическое агрегирование будет выполняться с использованием измерения дня.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose