INTEGRITY Dokumentace

Začínáme

Tento návod vás provede:

Předpoklady

  1. Zaregistrujte si účet Cloudflare ↗.
  2. Nainstalujte Node.js ↗.

Správce verzí Node.js

Použijte správce verzí Node, jako je Volta ↗ nebo nvm ↗ abyste se vyhnuli problémům s oprávněními a mohli měnit verze Node.js. Wrangler, o kterém se dozvíte dále v této příručce, vyžaduje verzi Node 16.17.0 nebo novější.

1. Vytvořte bucket R2 a povolte datový katalog

  1. Pokud ještě nejste přihlášeni, spusťte:

    npx wrangler login
  2. Vytvořte bucket R2:

    npx wrangler r2 bucket create r2-data-catalog-tutorial
  3. Povolte katalog pro svůj bucket:

    npx wrangler r2 bucket catalog enable r2-data-catalog-tutorial

    Při spuštění tohoto příkazu si poznamenejte Warehouse a Catalog URI. Budete je potřebovat později.

  1. V dashboardu Cloudflare přejděte na R2 Data Catalog stránce.

    Přejděte na R2 Data Catalog ↗
  2. Vyberte Vytvořte katalog.

  3. Zadejte název bucketu r2-data-catalog-tutorial. Průvodce bucket automaticky vytvoří, pokud ještě neexistuje. Volitelně můžete zvolit nápovědu umístění.

  4. Zkontrolujte konfiguraci a vyberte Vytvořte katalog.

  5. Po vytvoření zobrazí stránka s podrobnostmi katalogu vaše Catalog URI a Název warehouse. Tyto hodnoty si poznamenejte pro pozdější použití.

2. Vytvořte token API

Klienti Iceberg (včetně PyIceberg ↗) se musí ke katalogu ověřit pomocí Token R2 API který má oprávnění jak pro R2, tak pro katalog.

  1. V dashboardu Cloudflare přejděte na Objektové úložiště R2 stránce.

    Přejděte na Přehled ↗
  2. Vyberte Správa API tokenů.

  3. Vyberte Vytvoření API tokenu.

  4. Vyberte R2 Token text pro úpravu názvu API tokenu.

  5. V části Oprávnění, vyberte Admin Read & Write oprávnění. Tento návod vytváří tabulky a zapisuje do nich, proto vyžaduje přístup pro čtení i zápis. Pro klienty určené pouze k dotazování můžete místo toho použít Admin Read only tokenu. Podrobnosti o výběru správné úrovně oprávnění najdete v Ověřte svůj Iceberg engine.

  6. Vyberte Create API Token.

  7. Všimněte si Hodnota tokenu.

3. Nainstalujte uv

Musíte si nainstalovat správce balíčků Pythonu. V tomto průvodci použijte uv ↗. Pokud ještě nemáte nainstalovaný uv, postupujte podle průvodce instalací uv ↗.

4. Nainstalujte marimo a nastavte projekt pomocí uv

Použijeme marimo ↗ jako poznámkový blok Pythonu.

  1. Vytvořte adresář, ve kterém bude uložen notebook:

    mkdir r2-data-catalog-notebook
  2. Přejděte do nového adresáře:

    cd r2-data-catalog-notebook
  3. Inicializujte nový projekt uv (tím se vytvoří .venv a pyproject.toml):

    uv init
  4. Přidejte marimo a potřebné závislosti:

    uv add marimo pyiceberg pyarrow pandas

5. Vytvořte poznámkový blok Python pro práci s datovým skladem

  1. Vytvořte soubor s názvem r2-data-catalog-tutorial.py.

  2. Vložte následující úryvek kódu do r2-data-catalog-tutorial.py soubor:

    import marimo
    
    __generated_with = "0.11.31"
    app = marimo.App(width="medium")
    
    
    @app.cell
    def _():
    		import marimo as mo
    		return (mo,)
    
    
    @app.cell
    def _():
    		import pandas
    		import pyarrow as pa
    		import pyarrow.compute as pc
    		import pyarrow.parquet as pq
    
    		from pyiceberg.catalog.rest import RestCatalog
    
    		# Define catalog connection details (replace variables)
    		WAREHOUSE = "<WAREHOUSE>"
    		TOKEN = "<TOKEN>"
    		CATALOG_URI = "<CATALOG_URI>"
    
    		# Connect to R2 Data Catalog
    		catalog = RestCatalog(
    				name="my_catalog",
    				warehouse=WAREHOUSE,
    				uri=CATALOG_URI,
    				token=TOKEN,
    		)
    		return (
    				CATALOG_URI,
    				RestCatalog,
    				TOKEN,
    				WAREHOUSE,
    				catalog,
    				pa,
    				pandas,
    				pc,
    				pq,
    		)
    
    
    @app.cell
    def _(catalog):
    		# Create default namespace if needed
    		catalog.create_namespace_if_not_exists("default")
    		return
    
    
    @app.cell
    def _(pa):
    		# Create simple PyArrow table
    		df = pa.table({
    				"id": [1, 2, 3],
    				"name": ["Alice", "Bob", "Charlie"],
    				"score": [80.0, 92.5, 88.0],
    		})
    		return (df,)
    
    
    @app.cell
    def _(catalog, df):
    		# Create or load Iceberg table
    		test_table = ("default", "people")
    		if not catalog.table_exists(test_table):
    				print(f"Creating table: {test_table}")
    				table = catalog.create_table(
    						test_table,
    						schema=df.schema,
    				)
    		else:
    				table = catalog.load_table(test_table)
    		return table, test_table
    
    
    @app.cell
    def _(df, table):
    		# Append data
    		table.append(df)
    		return
    
    
    @app.cell
    def _(table):
    		print("Table contents:")
    		scanned = table.scan().to_arrow()
    		print(scanned.to_pandas())
    		return (scanned,)
    
    
    @app.cell
    def _():
    		# Optional cleanup. To run uncomment and run cell
    		# print(f"Deleting table: {test_table}")
    		# catalog.drop_table(test_table)
    		# print("Table dropped.")
    		return
    
    
    if __name__ == "__main__":
    		app.run()
  3. Nahraďte CATALOG_URI, WAREHOUSE, a TOKEN proměnné vlastními hodnotami z oddílů 1 a 2 v uvedeném pořadí.

  4. Spusťte editor poznámkového bloku ve svém prohlížeči:

    uv run marimo edit r2-data-catalog-tutorial.py

    Jakmile se váš poznámkový blok připojí ke katalogu, zobrazí se katalog spolu s jeho jmennými prostory a tabulkami v panelu Datasources v marimo.

Ve výše uvedeném poznámkovém bloku Python:

  1. Připojte se ke svému katalogu.
  2. Vytvořte default namespace.
  3. Vytvořte jednoduchou tabulku PyArrow.
  4. Vytvořte (nebo načtěte) people tabulku v default namespace.
  5. Přidejte do tabulky ukázková data.
  6. Vypište obsah tabulky.
  7. (Volitelné) Odstraňte people tabulka, kterou jsme vytvořili pro tento návod.

Zjistit více

Správa katalogů

Povolte nebo zakažte R2 Data Catalog pro svůj bucket, získejte podrobnosti konfigurace a ověřte svůj Iceberg engine.

Připojení k enginům Iceberg

Podrobné pokyny k nastavení Apache Spark a dalších běžných dotazovacích nástrojů najdete zde.