← R2 Data Catalog / r2-data-catalog
Začínáme
Tento návod vás provede:
- Vytváření prvního R2 bucket a povolením jeho datový katalog.
- Vytvoření API token potřebné k tomu, aby se dotazovací enginy mohly ověřit vůči vašemu katalogu dat.
- Použití PyIceberg ↗ k vytvoření vaší první tabulky Iceberg v marimo ↗ poznámkový blok Pythonu.
- Použití PyIceberg ↗ k načtení ukázkových dat do tabulky a jejich dotazování.
Předpoklady
- Zaregistrujte si účet Cloudflare ↗.
- 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
-
Pokud ještě nejste přihlášeni, spusťte:
npx wrangler login -
Vytvořte bucket R2:
npx wrangler r2 bucket create r2-data-catalog-tutorial -
Povolte katalog pro svůj bucket:
npx wrangler r2 bucket catalog enable r2-data-catalog-tutorialPři spuštění tohoto příkazu si poznamenejte Warehouse a Catalog URI. Budete je potřebovat později.
-
V dashboardu Cloudflare přejděte na R2 Data Catalog stránce.
Přejděte na R2 Data Catalog ↗ -
Vyberte Vytvořte katalog.
-
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í. -
Zkontrolujte konfiguraci a vyberte Vytvořte katalog.
-
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.
-
V dashboardu Cloudflare přejděte na Objektové úložiště R2 stránce.
Přejděte na Přehled ↗ -
Vyberte Správa API tokenů.
-
Vyberte Vytvoření API tokenu.
-
Vyberte R2 Token text pro úpravu názvu API tokenu.
-
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.
-
Vyberte Create API Token.
-
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.
-
Vytvořte adresář, ve kterém bude uložen notebook:
mkdir r2-data-catalog-notebook -
Přejděte do nového adresáře:
cd r2-data-catalog-notebook -
Inicializujte nový projekt uv (tím se vytvoří
.venvapyproject.toml):uv init -
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
-
Vytvořte soubor s názvem
r2-data-catalog-tutorial.py. -
Vložte následující úryvek kódu do
r2-data-catalog-tutorial.pysoubor: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() -
Nahraďte
CATALOG_URI,WAREHOUSE, aTOKENproměnné vlastními hodnotami z oddílů 1 a 2 v uvedeném pořadí. -
Spusťte editor poznámkového bloku ve svém prohlížeči:
uv run marimo edit r2-data-catalog-tutorial.pyJakmile 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:
- Připojte se ke svému katalogu.
- Vytvořte
defaultnamespace. - Vytvořte jednoduchou tabulku PyArrow.
- Vytvořte (nebo načtěte)
peopletabulku vdefaultnamespace. - Přidejte do tabulky ukázková data.
- Vypište obsah tabulky.
- (Volitelné) Odstraňte
peopletabulka, kterou jsme vytvořili pro tento návod.