[iceberg]2-hivecatalog

Iceberg Java API使用之 Hive Catalog方式 对于iceberg表,可以分为四部分,表结构定义(schema)、分区定义(partitionSpec)、表的属性(properties),以及表的唯一识别信息(identity)即表所属的数据库与表名。创建表时需要先定义这四部分在对其创建。对于hive类型的catalog,主要指定数据库存储位置,以及hive metastore server的URI。根据实际情况来决定是否需要这一步 直接创建表。2,将记录写入parquet文件。3,将文件写入到table中。 阅读详情

test1

当key不是spark_catalog

spark-sql --master local \
--driver-java-options "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5060" \
--conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \
--conf spark.sql.catalog.my_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.my_catalog.type=hive
create table IF NOT EXISTS employee_partition(
  id string,
  name string,
  age int,
  tel string
)
using iceberg
PARTITIONED BY (
  city_id string
);

在这里插入图片描述在这里插入图片描述
key不是spark_catalog时,insert数据会有些问题。


test2

当key是spark_catalog,这种是标准的

spark-sql --master local \
--conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkSessionCatalog \
--conf spark.sql.catalog.spark_catalog.type=hive

在这里插入图片描述
在这里插入图片描述
这种为正确情况,新建的空表时,TABLE_PARAMS 表中要有7个字段:

mysql> select * from TABLE_PARAMS;
|     15 | EXTERNAL                             | TRUE                                                                                                                                                                                                                                                                                                                                               |
|     15 | metadata_location                    | hdfs://ns1/user/wanghongbing/db/iceberg_hive/employee_partition1/metadata/00000-5525ef8b-bc94-48f0-8dd3-5aeccb80ea0d.metadata.json                                                                                                                                                                                                                 |
|     15 | numFiles                             | 1                                                                                                                                                                                                                                                                                                                                                  |
|     15 | owner                                | hadoop                                                                                                                                                                                                                                                                                                                                             |
|     15 | table_type                           | ICEBERG                                                                                                                                                                                                                                                                                                                                            |
|     15 | totalSize                            | 2008                                                                                                                                                                                                                                                                                                                                               |
|     15 | transient_lastDdlTime                | 1632798925                                                                                                                                                                                                                                                                                                                                         

(1)第1次写入数据

spark-sql> INSERT OVERWRITE TABLE iceberg_hive.employee_partition1 PARTITION (city_id="beijing")
         > VALUES
         > ("1","wang",17,"130"),
         > ("2","hong",18,"150"),
         > ("3","bing",19,"170");
Time taken: 8.769 seconds

插入分区数据后,分区表PARTITIONS仍然为空。 但是,TABLE_PARAMS 表中字段有所变化(7行-> 9行)。

mysql> select * from PARTITIONS;
Empty set (0.00 sec)
mysql> select * from TABLE_PARAMS;
|     15 | EXTERNAL                             | TRUE                                                                                                                                                                                                                                                                                                                                               |
|     15 | metadata_location                    | hdfs://ns1/user/wanghongbing/db/iceberg_hive/employee_partition1/metadata/00001-c02eda34-acc3-48ff-aa9d-d435734dbf6d.metadata.json                                                                                                                                                                                                                 |
|     15 | numFiles                             | 1                                                                                                                                                                                                                                                                                                                                                  |
|     15 | numRows                              | 3                                                                                                                                                                                                                                                                                                                                                  |
|     15 | owner                                | hadoop                                                                                                                                                                                                                                                                                                                                             |
|     15 | previous_metadata_location           | hdfs://ns1/user/wanghongbing/db/iceberg_hive/employee_partition1/metadata/00000-5525ef8b-bc94-48f0-8dd3-5aeccb80ea0d.metadata.json                                                                                                                                                                                                                 |
|     15 | table_type                           | ICEBERG                                                                                                                                                                                                                                                                                                                                            |
|     15 | totalSize                            | 1406                                                                                                                                                                                                                                                                                                                                               
|     15 | transient_lastDdlTime                | 1632798925                                                                                                                                                                                                                                                                                                                                        

hadoop存储变化

employee_partition1/
|-- data
|   `-- city_id=beijing
|       `-- 00000-0-c38fea92-1cdc-492b-9f09-a713d8e97d7f-00001.parquet
`-- metadata
    |-- 00000-5525ef8b-bc94-48f0-8dd3-5aeccb80ea0d.metadata.json
    |-- 00001-c02eda34-acc3-48ff-aa9d-d435734dbf6d.metadata.json
    |-- e656716d-5e76-425a-abc9-d7b5a1e855b4-m0.avro
    `-- snap-8454781130181280343-1-e656716d-5e76-425a-abc9-d7b5a1e855b4.avro

3 directories, 5 files

在这里插入图片描述
两json文件的diff,可以看到空表时快照id为-1. 快照为空。
在这里插入图片描述
查看json文件

{
  "format-version" : 1,
  "table-uuid" : "22560303-6d75-42b3-b6ae-c71a38147a1e",
  "location" : "hdfs://ns1/user/wanghongbing/db/iceberg_hive/employee_partition1",
  "last-updated-ms" : 1632802184610,
  "last-column-id" : 5,
  "schema" : {
    "type" : "struct",
    "schema-id" : 0,
    "fields" : [ {
      "id" : 1,
      "name" : "id",
      "required" : false,
      "type" : "string"
    }, {
      "id" : 2,
      "name" : "name",
      "required" : false,
      "type" : "string"
    }, {
      "id" : 3,
      "name" : "age",
      "required" : false,
      "type" : "int"
    }, {
      "id" : 4,
      "name" : "tel",
      "required" : false,
      "type" : "string"
    }, {
      "id" : 5,
      "name" : "city_id",
      "required" : false,
      "type" : "string"
    } ]
  },
    "current-schema-id" : 0,
  "schemas" : [ {
    "type" : "struct",
    "schema-id" : 0,
    "fields" : [ {
      "id" : 1,
      "name" : "id",
      "required" : false,
      "type" : "string"
    }, {
      "id" : 2,
      "name" : "name",
      "required" : false,
      "type" : "string"
    }, {
      "id" : 3,
      "name" : "age",
      "required" : false,
      "type" : "int"
    }, {
      "id" : 4,
      "name" : "tel",
      "required" : false,
      "type" : "string"
    }, {
      "id" : 5,
      "name" : "city_id",
      "required" : false,
      "type" : "string"
    } ]
  } ],
  "partition-spec" : [ {
    "name" : "city_id",
    "transform" : "identity",
    "source-id" : 5,
    "field-id" : 1000
  } ],
  "default-spec-id" : 0,
    "partition-specs" : [ {
    "spec-id" : 0,
    "fields" : [ {
      "name" : "city_id",
      "transform" : "identity",
      "source-id" : 5,
      "field-id" : 1000
    } ]
  } ],
  "last-partition-id" : 1000,
  "default-sort-order-id" : 0,
  "sort-orders" : [ {
    "order-id" : 0,
    "fields" : [ ]
  } ],
  "properties" : {
    "owner" : "hadoop"
  },
  "current-snapshot-id" : 8454781130181280343,
  "snapshots" : [ {
    "snapshot-id" : 8454781130181280343,
    "timestamp-ms" : 1632802184610,
    "summary" : {
      "operation" : "overwrite",
      "spark.app.id" : "local-1632800483195",
      "added-data-files" : "1",
      "added-records" : "3",
      "added-files-size" : "1406",
      "changed-partition-count" : "1",
      "total-records" : "3",
      "total-files-size" : "1406",
      "total-data-files" : "1",
      "total-delete-files" : "0",
      "total-position-deletes" : "0",
      "total-equality-deletes" : "0"
    },
    "manifest-list" : "hdfs://ns1/user/wanghongbing/db/iceberg_hive/employee_partition1/metadata/snap-8454781130181280343-1-e656716d-5e76-425a-abc9-d7b5a1e855b4.avro",
    "schema-id" : 0
  } ],
    "snapshot-log" : [ {
    "timestamp-ms" : 1632802184610,
    "snapshot-id" : 8454781130181280343
  } ],
  "metadata-log" : [ {
    "timestamp-ms" : 1632798924774,
    "metadata-file" : "hdfs://ns1/user/wanghongbing/db/iceberg_hive/employee_partition1/metadata/00000-5525ef8b-bc94-48f0-8dd3-5aeccb80ea0d.metadata.json"
  } ]
}

json文件中存储了

  • manifest-list(avro文件)
  • metadata-file(就是上一次的json文件)

(2)第2次写入数据

spark-sql> 
INSERT OVERWRITE TABLE iceberg_hive.employee_partition1 PARTITION (city_id="wuhan")
   VALUES
   ("4","w",17,"130"),
   ("5","h",18,"150"),
   ("6","b",19,"170");
mysql> select * from TABLE_PARAMS;
|     15 | EXTERNAL                             | TRUE                                                                                                                                                                                                                                                                                                                                               |
|     15 | metadata_location                    | hdfs://ns1/user/wanghongbing/db/iceberg_hive/employee_partition1/metadata/00002-99d06b27-2ff0-4f22-a40f-5ce5cbe6c6ec.metadata.json                                                                                                                                                                                                                 |
|     15 | numFiles                             | 2                                                                                                                                                                                                                                                                                                                                                  |
|     15 | numRows                              | 6                                                                                                                                                                                                                                                                                                                                                  |
|     15 | owner                                | hadoop                                                                                                                                                                                                                                                                                                                                             |
|     15 | previous_metadata_location           | hdfs://ns1/user/wanghongbing/db/iceberg_hive/employee_partition1/metadata/00001-c02eda34-acc3-48ff-aa9d-d435734dbf6d.metadata.json                                                                                                                                                                                                                 |
|     15 | table_type                           | ICEBERG                                                                                                                                                                                                                                                                                                                                            |
|     15 | totalSize                            | 2779                                                                                                                                                                                                                                                                                                                                               |     15 | transient_lastDdlTime                | 1632798925                                                                                                                                                                                                                                                                                                                                        

TABLE_PARAMS 表中字段有所变化

  • numFiles: 数据文件的文件个数,从1变为2
  • numRows:所有分区的总行数,数据变化后这里会更新
  • previous_metadata_location:上一个元数据json文件
  • totalSize:总字节数

那么,hdfs文件系统上会多数据文件、json文件、两个avro文件
在这里插入图片描述
以下分别分析avro文件、json文件
avro:
第2个avro文件 2cfc4831-b799-40eb-913d-548eede5c9ec-m0.avro

{
	"status": 1,
	"snapshot_id": {
		"long": 6656578434519846789
	},
	"data_file": {
		"file_path": "hdfs://ns1/user/wanghongbing/db/iceberg_hive/employee_partition1/data/city_id=wuhan/00000-2-53fed580-6321-4c03-bf95-1609ae4e287d-00001.parquet",
		"file_format": "PARQUET",
		"partition": {
			"city_id": {
				"string": "wuhan"
			}
		},
		"record_count": 3,
		"file_size_in_bytes": 1373,
		"block_size_in_bytes": 67108864,
		"column_sizes": {
			"array": [{
				"key": 1,
				"value": 54
			}, {
				"key": 2,
				"value": 54
			}, {
				"key": 3,
				"value": 52
			}, {
				"key": 4,
				"value": 57
			}, {
				"key": 5,
				"value": 93
			}]
		},
		"value_counts": {
			"array": [{
				"key": 1,
				"value": 3
			}, {
				"key": 2,
				"value": 3
			}, {
				"key": 3,
				"value": 3
			}, {
				"key": 4,
				"value": 3
			}, {
				"key": 5,
				"value": 3
			}]
		},
		"null_value_counts": {
			"array": [{
				"key": 1,
				"value": 0
			}, {
				"key": 2,
				"value": 0
			}, {
				"key": 3,
				"value": 0
			}, {
				"key": 4,
				"value": 0
			}, {
				"key": 5,
				"value": 0
			}]
		},
		"nan_value_counts": {
			"array": []
		},
		"lower_bounds": {
			"array": [{
				"key": 1,
				"value": "4"
			}, {
				"key": 2,
				"value": "b"
			}, {
				"key": 3,
				"value": "\u0011\u0000\u0000\u0000"
			}, {
				"key": 4,
				"value": "130"
			}, {
				"key": 5,
				"value": "wuhan"
			}]
		},
		"upper_bounds": {
			"array": [{
				"key": 1,
				"value": "6"
			}, {
				"key": 2,
				"value": "w"
			}, {
				"key": 3,
				"value": "\u0013\u0000\u0000\u0000"
			}, {
				"key": 4,
				"value": "170"
			}, {
				"key": 5,
				"value": "wuhan"
			}]
		},
		"key_metadata": null,
		"split_offsets": {
			"array": [4]
		},
		"sort_order_id": {
			"int": 0
		}
	}
}

这里,只包含第二次写入时的信息,如wuhan分区,不包含第一次的分区信息。

对应的第2个snap.avro文件 snap-6656578434519846789-1-2cfc4831-b799-40eb-913d-548eede5c9ec.avro

{
	"manifest_path": "hdfs://ns1/user/wanghongbing/db/iceberg_hive/employee_partition1/metadata/2cfc4831-b799-40eb-913d-548eede5c9ec-m0.avro",
	"manifest_length": 6233,
	"partition_spec_id": 0,
	"added_snapshot_id": {
		"long": 6656578434519846789
	},
	"added_data_files_count": {
		"int": 1
	},
	"existing_data_files_count": {
		"int": 0
	},
	"deleted_data_files_count": {
		"int": 0
	},
	"partitions": {
		"array": [{
			"contains_null": false,
			"contains_nan": {
				"boolean": false
			},
			"lower_bound": {
				"bytes": "wuhan"
			},
			"upper_bound": {
				"bytes": "wuhan"
			}
		}]
	},
	"added_rows_count": {
		"long": 3
	},
	"existing_rows_count": {
		"long": 0
	},
	"deleted_rows_count": {
		"long": 0
	}
} {
	"manifest_path": "hdfs://ns1/user/wanghongbing/db/iceberg_hive/employee_partition1/metadata/e656716d-5e76-425a-abc9-d7b5a1e855b4-m0.avro",
	"manifest_length": 6241,
	"partition_spec_id": 0,
	"added_snapshot_id": {
		"long": 8454781130181280343
	},
	"added_data_files_count": {
		"int": 1
	},
	"existing_data_files_count": {
		"int": 0
	},
	"deleted_data_files_count": {
		"int": 0
	},
	"partitions": {
		"array": [{
			"contains_null": false,
			"contains_nan": {
				"boolean": false
			},
			"lower_bound": {
				"bytes": "beijing"
			},
			"upper_bound": {
				"bytes": "beijing"
			}
		}]
	},
	"added_rows_count": {
		"long": 3
	},
	"existing_rows_count": {
		"long": 0
	},
	"deleted_rows_count": {
		"long": 0
	}
}

这里其实包含了2个分区的信息,第1次和第2次分区信息都有。


(3)第3次写入数据

update iceberg_hive.employee_partition1 set tel='newNum',age=1 where name='b';

在这里插入图片描述
先看快照文件,snap-2173158888179895109-1-c701372c-0d5f-47ed-aacd-7064c94f61d9.avro
有3个json,记录了每个分区快照和最近的变化。

{
	"manifest_path": "hdfs://ns1/user/wanghongbing/db/iceberg_hive/employee_partition1/metadata/c701372c-0d5f-47ed-aacd-7064c94f61d9-m1.avro",
	"manifest_length": 6237,
	"partition_spec_id": 0,
	"added_snapshot_id": {
		"long": 2173158888179895109
	},
	"added_data_files_count": {
		"int": 1
	},
	"existing_data_files_count": {
		"int": 0
	},
	"deleted_data_files_count": {
		"int": 0
	},
	"partitions": {
		"array": [{
			"contains_null": false,
			"contains_nan": {
				"boolean": false
			},
			"lower_bound": {
				"bytes": "wuhan"
			},
			"upper_bound": {
				"bytes": "wuhan"
			}
		}]
	},
	"added_rows_count": {
		"long": 3
	},
	"existing_rows_count": {
		"long": 0
	},
	"deleted_rows_count": {
		"long": 0
	}
} {
	"manifest_path": "hdfs://ns1/user/wanghongbing/db/iceberg_hive/employee_partition1/metadata/c701372c-0d5f-47ed-aacd-7064c94f61d9-m0.avro",
	"manifest_length": 6232,
	"partition_spec_id": 0,
	"added_snapshot_id": {
		"long": 2173158888179895109
	},
	"added_data_files_count": {
		"int": 0
	},
	"existing_data_files_count": {
		"int": 0
	},
	"deleted_data_files_count": {
		"int": 1
	},
	"partitions": {
		"array": [{
			"contains_null": false,
			"contains_nan": {
				"boolean": false
			},
			"lower_bound": {
				"bytes": "wuhan"
			},
			"upper_bound": {
				"bytes": "wuhan"
			}
		}]
	},
	"added_rows_count": {
		"long": 0
	},
	"existing_rows_count": {
		"long": 0
	},
	"deleted_rows_count": {
		"long": 3
	}
} {
	"manifest_path": "hdfs://ns1/user/wanghongbing/db/iceberg_hive/employee_partition1/metadata/e656716d-5e76-425a-abc9-d7b5a1e855b4-m0.avro",
	"manifest_length": 6241,
	"partition_spec_id": 0,
	"added_snapshot_id": {
		"long": 8454781130181280343
	},
	"added_data_files_count": {
		"int": 1
	},
	"existing_data_files_count": {
		"int": 0
	},
	"deleted_data_files_count": {
		"int": 0
	},
	"partitions": {
		"array": [{
			"contains_null": false,
			"contains_nan": {
				"boolean": false
			},
			"lower_bound": {
				"bytes": "beijing"
			},
			"upper_bound": {
				"bytes": "beijing"
			}
		}]
	},
	"added_rows_count": {
		"long": 3
	},
	"existing_rows_count": {
		"long": 0
	},
	"deleted_rows_count": {
		"long": 0
	}
}

同下截图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

文件结构

1.snapshot

  • meta文件夹下的json文件,每个meta.json文件相当于一个snapshot,其中包含了当前版本的schema信息、产生此版本的任务信息、以及manifest文件地址信息。

2.manifest-list文件

  • 即 snap-xxx.avro,包含了所有mainfest的文件的元数据信息,包含了manifest地址,分区范围以及一些统计信息

3.manifest文件

  • 即xxx.avro文件。包含了所有的数据地址细化到具体文件,所以读取时不需list所有的文件,包含了分区信息,所有字段的存储大小、每个字段的行数信息、空值统计信息、每个字段的最大值、最小值信息、分区信息等等,上层引擎可以利用这些做JOIN的Cache优化、做文件级别的下推过滤,精准的分区信息,大大提高了上层引擎查询初始化的速度。
避坑指南:Hive 3.1.2 + Iceberg 1.1.0 集成实战,从环境配置到第一个表(含Tez引擎适配) 本文详细介绍了Hive 3.1.2与Iceberg 1.1.0的深度集成实战,包括环境准备、版本适配、核心配置优化(特别是Tez引擎适配)、服务启动验证、Catalog配置及表操作实战。通过避坑指南和最佳实践,帮助开发者高效完成Hive与Iceberg的集成,提升大数据处理能力。 阅读详情

相关推荐

Hive 3.1.2 集成 Apache Iceberg 1.1.0 保姆级避坑指南(含Tez引擎配置)

本文详细介绍了Hive 3.1.2与Apache Iceberg 1.1.0的集成实践,包括环境准备、版本适配、Tez引擎配置优化及常见问题解决方案。通过实战案例和性能对比,帮助开发者高效部署和优化Iceberg与Hive的集成,提升数据处理效率。

流云 350

spark读取数据写入hive数据表

pyspark 从已有数据表读取数据写入目标hive表的代码模板

wangwangstone的博客 6564

数据湖(十):Hive与Iceberg整合

Iceberg就是一种表格式,支持使用Hive对Iceberg进行读写操作,但是对Hive的版本有要求,如下:操作Hive 2.xHive 3.1.2CREATE EXTERNAL TABLE√√CREATE TABLE√√DROP TABLE√√SELECT√√INSERT INTO√√这里基于Hive3.1.2版本进行Hive操作Iceberg表讲解。想要使用Hive支持查询Iceberg表,首先需要下载“iceberg-hive-runtime.jar”,Hive通过该Jar可以加载Hive或者更新I

Lansonli(蓝深李)的博客 3088

Iceberg从入门到精通系列之一:Iceberg核心概念理解

Manifest(清单):描述Table状态的元数据,包括Table的Schema(模式)、Partition Spec(分区规范)和Current Snapshot ID(当前快照ID)等信息。Partition(分区):将数据按照指定规则分隔成的逻辑单元,Partition由一个或多个数据块(Block)组成。Block(块):其中存储的是Partition的数据,每个块都有一个唯一的ID,块的大小可以在表级别进行配置。创建了一个包含id和name字段的表,并且定义了以id字段为分区键的分区规则。

zhengzaifeidelushang的博客 8687

【大数据入门核心技术-Iceberg】(二)Iceberg与Hive整合

重启hadoop 、yarn 、hiveserver2。2、修改hive-site.xml。Iceberg提供一个开放通用的表格式(Table Format)实现方案,不和特定的数据存储、计算引擎绑定。目前大数据领域的常见数据存储(HDFS、S3...),计算引擎(Flink、Spark...)都可以接入Iceberg。 在生产环境中,可选择不同的组件搭使用。甚至可以不通过计算引擎,直接读取存在文件系统上的数据.Iceberg提供一个开放通用的表格式(Table Format)实现方案,不和特

820

NHANES数据库实战:数据合并与加权分析技巧

本文详细解析了NHANES数据库实战中的核心技巧,重点阐述了数据合并与加权分析的正确方法。通过两个具体案例,手把手指导如何从数据下载、合并、权重计算到使用R语言survey包进行加权统计分析,避免因忽略复杂抽样设计而导致的研究偏倚,确保分析结果的准确性与可发表性。

weixin_29057065的博客 585

iceberg学习笔记(2)—— 与Hive集成

本文介绍了iceberg框架如何与hive进行集成

WHY的博客 2620

SquareLine Studio汉化版安装激活全攻略:LVGL嵌入式UI设计从入门到出代码

嵌入式GUI开发中,LVGL作为轻量级开源图形库,广泛应用于STM32、ESP32等MCU平台。可视化设计器通过拖拽生成LVGL代码,大幅提升UI开发效率。SquareLine Studio正是这类工具的代表,支持界面设计、事件绑定与代码导出。其安装、汉化与激活是初学者常见门槛,尤其涉及LVGL版本匹配、字体配置及FreeRTOS移植等关键环节。本文围绕汉化版安装、一个月免费激活码使用及最小可用流程展开,帮助开发者快速上手LVGL界面设计,规避常见环境与集成问题。

weixin_29189987的博客 410

Iceberg从入门到精通系列之二:Iceberg集成Hive

Hive的元数据服务是一种存储和管理Hive表格和数据定义的中央服务,它允许用户定义表格、分区和桶等元数据信息,并将其存储在Hive元数据存储库中。因此,内部表和外部表的主要区别在于数据和元数据的存储位置和管理方式。内部表由Hive管理数据和元数据,而外部表只由Hive管理元数据,实际的存储数据由外部数据源维护。其中,是HiveServer2服务所在的主机名,是HiveServer2服务监听的端口号,是连接的Hive数据库名,是连接的用户名,是连接的密码。在Hive中,内部表和外部表是两种不同的表格类型。

zhengzaifeidelushang的博客 3568

Qwen2.5-7B大模型实战:从零部署到高效推理全流程解析

本文详细解析了Qwen2.5-7B大模型从零部署到高效推理的全流程。内容涵盖环境准备、模型下载、使用Transformers进行核心对话推理,并深入介绍了vLLM与TGI生产级服务部署、GPTQ/AWQ量化技术以降低显存消耗,以及llama.cpp、Ollama等本地推理方案。旨在帮助开发者快速掌握部署技巧,实现大模型在消费级硬件上的高效运行。

weixin_29061425的博客 490

R语言笔记十:独立性检验函数

1.独立性检验函数        独立性检验是根据频数信息判断两类因子彼此相关或相互独立的假设检验。所谓独立性就是指变量之间是独立的,没有关系。 独立性检验算法:卡方检验、Fisher检验、Cochran-Mantel-Haenszel检验 2.假设检验 假设检验(Hypothesis Testing)是数理统计学中根据一定假设条件由样本推断总体的一种方法。 原假设——没有发生 备择假设——发生了 具体做法:根据问题的需要对所研究的总体作

weixin_44384631的博客 4111

iceberg1.2.0 修改表与覆盖写

iceberg 1.2.0不支持insert overwrite table iceberg_test1 values(1,'hello');语句去使用新数据覆盖原有的老数据,实际上是新增了数据。只支持HiveCatalog表修改表属性,Iceberg表属性和Hive表属性存储在HMS中是同步的。修改外部表删表时是否删除数据的表属性,这里是修改为删除表时不删除数据。

pengcheng2013的博客 244

第10集:AIOps 平台架构设计!画出面试官最想看的系统全景图

本文介绍了如何将AIOps平台的六大功能模块整合为四层架构设计,并生成专业系统全景图。文章首先指出面试中架构设计能力的重要性,强调一张清晰的架构图能直观展现全局观。随后指导读者检查项目结构,准备绘图环境。核心部分详细拆解了四层架构:数据采集层(Prometheus、ELK等)、AI分析层(巡检、告警、预测等)、决策执行层(工作流引擎、自愈Agent)和展示交互层(API、控制台)。通过Python代码自动生成模块依赖关系图,并提供了面试讲解技巧。全文旨在帮助开发者在面试中系统性地展示项目架构设计能力。

qq_2937655951的博客 92

Spark3.1.2与Iceberg0.12.1整合-hadoop和hive的catalog,DDL,隐藏分区(按年,月,天,小时),create(replace) T as select ..., ...

Spark3.1.2与Iceberg0.12.1整合 Spark可以操作Iceberg数据湖,这里使用的Iceberg的版本为0.12.1,此版本与Spark2.4版本之上兼容。由于在Spark2.4版本中在操作Iceberg时不支持DDL、增加分区及增加分区转换、Iceberg元数据查询、insert into/overwrite等操作,建议使用Spark3.x版本来整合Iceberg0.12...

weixin_48370579的博客 1750

TC3XX - MCAL知识点(十一):WDG EB-tresos配置说明与代码浅析

在AUTOSAR中,看门狗栈实现了三种监控机制:实时监控:用于周期软件的定时监控期限监督:针对非周期软件逻辑监督:用于监督执行顺序的正确性看门狗(WDG)驱动实现AUTOSAR(4.2.2)中规定的看门狗SWS,提供初始化、改变操作模式和设置触发条件(超时)等服务,供看门狗硬件(WDT)用户使用。WDG驱动的用户包括:模式管理模块(用于初始化),WdgM通过Wdglf设置触发条件和驱动运行模式设置。WdgM实施上述监督机制。AUTOSAR扩展触发概念,以支持窗口看门狗模式。

梦想技术家 3599

FANUC机器人_CRX协作机器人的开机和示教器的初始化设置基本步骤(二)

FANUC机器人_CRX协作机器人的开机和示教器的初始化设置基本步骤

Robot_PLC_HMI_Automation 2732

Apache Iceberg快速入门

导言 本文主要介绍如何快速的通过Spark访问Iceberg table。 Spark通过DataSource和DataFrame API访问Iceberg table,或者进行Catalog相关的操作。由于Spark Data Source V2 API还在持续的演进和修改中,所以Iceberg在不同的Spark版本中的使用方式有所不同。 版本对比 功能 Spark 2.4 Spark 3.0 基于DataFrame - 读数据 支持 支持 -

mojolang 1733

税务某局 webpack 登录接口逆向分析

我们再回到接口逻辑去看一下,发现每次请求前,还有两个接口,getpublickey和sendsm4,这里分析了一下调用逻辑,sm4这个接口用到一个参数是由publickey返回的一个参数而来,这个参数又经过内部加密处理,我们找到这个参数加密的地方,大概是在这个位置。我们还是顺着逻辑将加载器扣下来,然后用一个变量去接收,有了加载器,我们直接把加密代码扣下来做下处理,把一些用到的参数整理下如下。打上断点分析后,_utils_getuuid这个很长的变量也是加载器的一个函数,我们将这段代码也扣下来,如下。

码王吴彦祖的博客 402

Iceberg与Hive集成的性能优化与调优策略

本文深入探讨了Iceberg与Hive集成的性能优化与调优策略,重点分析了存储层优化、元数据管理、查询加速技术等关键方面。通过合理配置HiveCatalog或HadoopCatalog,结合文件格式选择、分区设计和并发控制,显著提升大数据处理效率。实际案例显示,优化后的系统可实现5倍以上的查询性能提升。

sea99的博客 620

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

万能的Hive Metastore能存哪些类型的表?

本文首发微信公众号:码上观世界由于Hive Metastore在Hadoop生态中的独特地位,Hive Metastore也顺理成章成为实时大数据领域中元数据存储的”兵家必争之地“。目前,主要引擎Spark、Flink、Iceberg、Trino等都集成了Hive Metastore。那么Hive Metastore这个万能元数据大熔炉到底能存储哪些类型的数据表呢?简单概...

None 862

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Iceberg从入门到精通系列之十八:一篇文章深入了解Flink对Iceberg的支持

Iceberg从入门到精通系列之十八:一篇文章深入了解Flink对Iceberg的支持

zhengzaifeidelushang的博客 1387

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

数据湖Iceberg | 如何正确使用Iceberg

在介绍如何使用Iceberg之前,先简单地介绍一下Iceberg catalog的概念。catalog是Iceberg对表进行管理(create、drop、rename等)的一个组件。目前...

Focus on Lakehouse 4614

Iceberg与hive的集成

2.上传jar包拷贝到Hive的auxlib目录下3.修改hive-site.xml使用TEZ引擎注意事项:(1)使用hive版本>=3.1.2,需要TEZ版本>=0.10.1(4)启动HMS服务。

2503_94597397的博客 318

Flink读取Kafka数据写入IceBerg(HiveCatalog)

java8 + hive3 + iceberg0.13.2 + Kafka3 写入老版本的iceberg和新版本的实现方式不太一样,ai生成的正确率堪忧

狗不理的博客 747

Apache Iceberg 数据湖从入门到放弃(2) —— 初步入门

在介绍如何使用Iceberg之前,先简单地介绍一下Iceberg catalog的概念。catalog是Iceberg对表进行管理(create、drop、rename等)的一个组件。目前Iceberg主要支持HiveCatalog和HadoopCatalog两种Catalog。其中HiveCatalog将当前表metadata文件路径存储在Metastore,这个表metadata文件是所有读写Iceberg表的入口,所以每次读写Iceberg表都需要先从Metastore中取出对应的表meta...

qq_31866793的博客 5359

Iceberg: COW模式下的MERGE INTO的执行流程

public class SparkTable implements org . apache . spark . sql . connector . catalog . Table , // 继承自Spark的接口 SupportsRead , SupportsWrite , SupportsDelete , // 支持删除 SupportsRowLevelOperations , // 支持行级的数据更新 SupportsMetadataColumns {} /**

Dreamming Time的博客 2393
上一篇: [iceberg]1-环境
下一篇: [iceberg]3-spark调用iceberg入口分析
王小禾
博客等级 码龄11年 80粉丝 291原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值