

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Tingkatkan kernel dengan sihir perintah di EMR Studio
<a name="emr-studio-magics"></a>

## Gambaran umum
<a name="overview-magics"></a>

EMR Studio dan Notebook EMR mendukung magic perintah. *Magic*perintah, atau * magic s*, adalah penyempurnaan yang disediakan kernel IPython untuk membantu Anda menjalankan dan menganalisis data. IPython adalah lingkungan shell interaktif yang dibangun dengan Python.

Amazon EMR juga mendukungSparkmagic, paket yang menyediakan Spark-related kernel (PySpark, SparkR, dan kernel Scala) dengan magic perintah tertentu dan yang menggunakan Livy di cluster untuk mengirimkan pekerjaan Spark.

Anda dapat menggunakan magic perintah selama Anda memiliki kernel Python di notebook EMR Anda. Demikian pula, Spark-related kernel apa pun mendukung Sparkmagic perintah.

Magicperintah, juga disebut * magic s*, datang dalam dua varietas:
+ **Bar magic is s ** - magic Perintah ini dilambangkan dengan `%` awalan tunggal dan beroperasi pada satu baris kode
+ **Cell magic s ** - Per magic intah ini dilambangkan dengan `%%` awalan ganda dan beroperasi pada beberapa baris kode

Untuk semua yang magic tersedia, lihat[Daftar sihir and Spark Magic perintah](#accessing-all-magic-commands).

## Pertimbangan dan batasan
<a name="considerations-limitations-magics"></a>
+ EMR Serverless tidak mendukung `%%sh` untuk dijalankan. `spark-submit` Itu tidak mendukung Notebook EMR magic s.
+ Amazon EMR di kluster EKS tidak mendukung Sparkmagic perintah untuk EMR Studio. Ini karena kernel Spark yang Anda gunakan dengan titik akhir terkelola dibangun ke dalam Kubernetes, dan mereka tidak didukung oleh dan Livy. Sparkmagic Anda dapat mengatur konfigurasi Spark langsung ke SparkContext objek sebagai solusi, seperti yang ditunjukkan contoh berikut.

  ```
  spark.conf.set("spark.driver.maxResultSize", '6g') 
  ```
+ Per magic intah dan tindakan berikut dilarang oleh AWS:
  + `%alias`
  + `%alias_magic`
  + `%automagic`
  + `%macro`
  + Memodifikasi `proxy_user` dengan `%configure`
  + Memodifikasi `KERNEL_USERNAME` dengan `%env` atau `%set_env`

## Daftar sihir and Spark Magic perintah
<a name="accessing-all-magic-commands"></a>

Gunakan perintah berikut untuk membuat daftar magic perintah yang tersedia:
+ `%lsmagic`daftar semua fungsi yang tersedia saat ini. magic
+ `%%help`mencantumkan Spark-related magic fungsi yang tersedia saat ini yang disediakan oleh paket. Sparkmagic

## Gunakan `%%configure` untuk mengkonfigurasi Spark
<a name="using-configure-sparkmagic"></a>

Salah satu perintah yang paling berguna adalah Sparkmagic `%%configure` perintah, yang mengonfigurasi parameter pembuatan sesi. Menggunakan `conf` pengaturan, Anda dapat mengonfigurasi konfigurasi Spark apa pun yang disebutkan dalam dokumentasi [ konfigurasi untuk Apache Spark](https://spark.apache.org/docs/latest/configuration.html).

**Example Tambahkan file JAR eksternal ke Notebook EMR dari repositori Maven atau Amazon S3**  
Anda dapat menggunakan pendekatan berikut untuk menambahkan ketergantungan file JAR eksternal ke Spark-related kernel apa pun yang didukung olehSparkmagic.  

```
%%configure -f
{"conf": {
    "spark.jars.packages": "com.jsuereth:scala-arm_2.11:2.0,ml.combust.bundle:bundle-ml_2.11:0.13.0,com.databricks:dbutils-api_2.11:0.0.3",
    "spark.jars": "s3://{{amzn-s3-demo-bucket}}/my-jar.jar"
    }
}
```

**Example : Konfigurasikan Hudi**  
Anda dapat menggunakan editor notebook untuk mengonfigurasi notebook EMR Anda untuk menggunakan Hudi.  

```
%%configure
{ "conf": {
     "spark.jars": "hdfs://apps/hudi/lib/hudi-spark-bundle.jar,hdfs:///apps/hudi/lib/spark-spark-avro.jar", 
     "spark.serializer": "org.apache.spark.serializer.KryoSerializer",
     "spark.sql.hive.convertMetastoreParquet":"false"
     }
}
```

## Gunakan `%%sh` untuk menjalankan spark-submit ``
<a name="using-sh-sparkmagic"></a>

Men `%%sh` magic jalankan perintah shell dalam subproses pada instance cluster terlampir Anda. Biasanya, Anda akan menggunakan salah satu Spark-related kernel untuk menjalankan aplikasi Spark di cluster terlampir Anda. Namun, jika Anda ingin menggunakan kernel Python untuk mengirimkan aplikasi Spark, Anda dapat menggunakan yang berikutmagic, mengganti nama bucket dengan nama bucket Anda dalam huruf kecil.

```
%%sh
spark-submit --master yarn --deploy-mode cluster s3://{{amzn-s3-demo-bucket}}/test.py
```

Dalam contoh ini, cluster membutuhkan akses ke lokasi`s3://{{amzn-s3-demo-bucket}}/test.py`, atau perintah akan gagal.

Anda dapat menggunakan perintah Linux apa pun dengan `%%sh`magic. Jika Anda ingin menjalankan perintah Spark atau YARN, gunakan salah satu opsi berikut untuk membuat pengguna `emr-notebook` Hadoop dan berikan izin pengguna untuk menjalankan perintah:
+ Anda dapat secara eksplisit membuat pengguna baru dengan menjalankan perintah berikut.

  ```
  hadoop fs -mkdir /user/emr-notebook
  hadoop fs -chown emr-notebook /user/emr-notebook
  ```
+ Anda dapat mengaktifkan peniruan pengguna di Livy, yang secara otomatis membuat pengguna. Untuk informasi selengkapnya, lihat [Mengaktifkan peniruan pengguna untuk memantau aktivitas pengguna dan tugas Spark](emr-managed-notebooks-spark-monitor.md).

## Gunakan `%%display` untuk memvisualisasikan kerangka data Spark
<a name="using-display-sparkmagic"></a>

Anda dapat menggunakan `%%display` magic untuk memvisualisasikan kerangka data Spark. Untuk menggunakan inimagic, jalankan perintah berikut. 

```
%%display df
```

Pilih untuk melihat hasil dalam format tabel, seperti yang ditunjukkan gambar berikut.

![Output menggunakan %%display magic yang menunjukkan hasil dalam format tabel.](https://docs.aws.amazon.com/id_id/emr/latest/ManagementGuide/images/magic-display-table.png)


Anda juga dapat memilih untuk memvisualisasikan data Anda dengan lima jenis grafik. Pilihan Anda termasuk diagram lingkaran, pencar, garis, area, dan batang.

![Output menggunakan %%display magic yang menunjukkan hasil dalam format bagan.](https://docs.aws.amazon.com/id_id/emr/latest/ManagementGuide/images/magic-display-chart.png)


## Gunakan Notebook EMR sihirdetik
<a name="emr-magics"></a>

Amazon EMR menyediakan Notebook EMR berikut yang dapat magic Anda gunakan dengan Python3 dan kernel: Spark-based 
+ `%mount_workspace_dir`- Pasang direktori Workspace Anda ke cluster Anda sehingga Anda dapat mengimpor dan menjalankan kode dari file lain di Workspace Anda
**catatan**  
Dengan`%mount_workspace_dir`, hanya kernel Python 3 yang dapat mengakses sistem file lokal Anda. Pelaksana Spark tidak akan memiliki akses ke direktori yang dipasang dengan kernel ini.
+ `%umount_workspace_dir`- Lepaskan direktori Workspace Anda dari cluster Anda
+ `%generate_s3_download_url`- Menghasilkan tautan unduhan sementara di output notebook Anda untuk objek Amazon S3 

### Prasyarat
<a name="emr-magics-prereqs"></a>

Sebelum Anda menginstal Notebook EMRmagic, selesaikan tugas berikut:
+ Pastikan Anda [Peran layanan untuk instans EC2 klaster (profil instans EC2)](emr-iam-role-for-ec2.md) memiliki akses baca untuk Amazon S3. Kebijakan `EMR_EC2_DefaultRole` dengan `AmazonElasticMapReduceforEC2Role` dikelola memenuhi persyaratan ini. Jika Anda menggunakan peran atau kebijakan khusus, pastikan peran tersebut memiliki izin S3 yang diperlukan.
**catatan**  
Notebook EM magic R berjalan di cluster sebagai pengguna notebook dan menggunakan profil instance EC2 untuk berinteraksi dengan Amazon S3. Saat Anda memasang direktori Workspace pada cluster EMR, semua Workspace dan notebook EMR dengan izin untuk melampirkan ke cluster tersebut dapat mengakses direktori yang dipasang.  
Direktori dipasang sebagai read-only secara default. Sementara `s3fs-fuse` dan `goofys` mengizinkan pemasangan baca-tulis, kami sangat menyarankan agar Anda tidak memodifikasi parameter pemasangan untuk memasang direktori dalam mode baca-tulis. Jika Anda mengizinkan akses tulis, setiap perubahan yang dilakukan pada direktori akan ditulis ke bucket S3. Untuk menghindari penghapusan atau penulisan ulang yang tidak disengaja, Anda dapat mengaktifkan pembuatan versi untuk bucket S3 Anda. Untuk mempelajari selengkapnya, lihat [ Menggunakan versioning di bucket ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html) S3.
+ Jalankan salah satu skrip berikut di cluster Anda untuk menginstal dependensi untuk Note magic book EMR s. Untuk menjalankan skrip, Anda dapat salah satu [Gunakan tindakan bootstrap kustom](emr-plan-bootstrap.md#bootstrapCustom) atau mengikuti instruksi dalam J [ alankan perintah dan skrip di cluster Amazon EMR ](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-commandrunner.html) ketika Anda sudah memiliki cluster yang sedang berjalan.

  Anda dapat memilih dependensi mana yang akan diinstal. Baik [ s3fs-fuse ](https://github.com/s3fs-fuse/s3fs-fuse) dan [ goofys ](https://github.com/kahing/goofys) adalah alat FUSE (Filesystem in Userspace) yang memungkinkan Anda memasang bucket Amazon S3 sebagai sistem file lokal pada cluster. `s3fs`Alat ini memberikan pengalaman yang mirip dengan POSIX. `goofys`Alat ini adalah pilihan yang baik ketika Anda lebih suka kinerja daripada sistem POSIX-compliant file.

  Seri Amazon EMR 7.x menggunakan Amazon Linux 2023, yang tidak mendukung repositori EPEL. Jika Anda menjalankan Amazon EMR 7.x, ikuti petunjuk [ s3f GitHub ](https://github.com/s3fs-fuse/s3fs-fuse/blob/master/COMPILATION.md) s-fuse untuk menginstal. `s3fs-fuse` Jika Anda menggunakan seri 5.x atau 6.x, gunakan perintah berikut untuk menginstal. `s3fs-fuse`

  ```
  #!/bin/sh
  
  # Install the s3fs dependency for EMR Notebooks magics 
  sudo amazon-linux-extras install epel -y
  sudo yum install s3fs-fuse -y
  ```

  **ATAU **

  ```
  #!/bin/sh
  
  # Install the goofys dependency for EMR Notebooks magics 
  sudo wget https://github.com/kahing/goofys/releases/latest/download/goofys -P /usr/bin/
  sudo chmod ugo+x /usr/bin/goofys
  ```

### Instal Notebook EMR sihirdetik
<a name="emr-magics-install"></a>

**catatan**  
Dengan Amazon EMR rilis 6.0 hingga 6.9.0, dan 5.0 hingga 5.36.0, hanya dukungan versi `emr-notebooks-magics` paket 0.2.0 dan yang lebih tinggi. `%mount_workspace_dir` magic

Selesaikan langkah-langkah berikut untuk menginstal Notebook EMR magic s.

1. Di notebook Anda, jalankan perintah berikut untuk menginstal [`emr-notebooks-magics`](https://pypi.org/project/emr-notebooks-magics/) paket.

   ```
   %pip install boto3 --upgrade
   %pip install botocore --upgrade
   %pip install emr-notebooks-magics --upgrade
   ```

1. Mulai ulang kernel Anda untuk memuat Notebook EMR magic s.

1. Verifikasi instalasi Anda dengan perintah berikut, yang seharusnya menampilkan teks bantuan keluaran untuk`%mount_workspace_dir`.

   ```
   %mount_workspace_dir?
   ```

### Pasang direktori Workspace dengan `%mount_workspace_dir`
<a name="emr-magics-mount-workspace"></a>

Ini `%mount_workspace_dir` magic memungkinkan Anda memasang direktori Workspace Anda ke cluster EMR Anda sehingga Anda dapat mengimpor dan menjalankan file, modul, atau paket lain yang disimpan di direktori Anda.

Contoh berikut memasang seluruh direktori Workspace ke cluster, dan menentukan {{`<--fuse-type>`}} argumen opsional untuk menggunakan goofys untuk memasang direktori.

```
%mount_workspace_dir . {{<--fuse-type goofys>}}
```

Untuk memverifikasi bahwa direktori Workspace Anda sudah terpasang, gunakan contoh berikut untuk menampilkan direktori kerja saat ini dengan `ls` perintah. Output harus menampilkan semua file di Workspace Anda.

```
%%sh
ls
```

Setelah selesai membuat perubahan di Workspace, Anda dapat melepas direktori Workspace dengan perintah berikut:

**catatan**  
Direktori Workspace Anda tetap terpasang ke cluster Anda bahkan ketika Workspace dihentikan atau dilepas. Anda harus secara eksplisit melepas direktori Workspace Anda.

```
%umount_workspace_dir
```

### Unduh objek Amazon S3 dengan `%generate_s3_download_url`
<a name="emr-magics-generate-s3-download-url"></a>

Per `generate_s3_download_url` intah ini membuat URL yang telah ditandatangani sebelumnya untuk objek yang disimpan di Amazon S3. Anda dapat menggunakan URL yang telah ditandatangani sebelumnya untuk mengunduh objek ke mesin lokal Anda. Misalnya, Anda dapat menjalankan `generate_s3_download_url` untuk mengunduh hasil kueri SQL yang ditulis kode Anda ke Amazon S3.

URL yang telah ditandatangani berlaku selama 60 menit secara default. Anda dapat mengubah waktu kedaluwarsa dengan menentukan jumlah detik untuk ben `--expires-in` dera. Misalnya, `--expires-in 1800` membuat URL yang valid selama 30 menit.

Contoh berikut menghasilkan tautan unduhan untuk objek dengan menentukan jalur Amazon S3 lengkap:`{{s3://EXAMPLE-DOC-BUCKET/path/to/my/object}}`.

```
%generate_s3_download_url {{s3://EXAMPLE-DOC-BUCKET/path/to/my/object}}
```

Untuk mempelajari lebih lanjut tentang menggunakan`generate_s3_download_url`, jalankan perintah berikut untuk menampilkan teks bantuan.

```
%generate_s3_download_url?
```

### Jalankan buku catatan dalam mode tanpa kepala dengan% execute\_notebook ``
<a name="headless-execution"></a>

Dengan `%execute_notebook`magic, Anda dapat menjalankan notebook lain dalam mode tanpa kepala dan melihat output untuk setiap sel yang telah Anda jalankan. Ini magic memerlukan izin tambahan untuk peran instans yang dibagikan Amazon EMR dan Amazon EC2. Untuk detail lebih lanjut tentang cara memberikan izin tambahan, jalankan perintah`%execute_notebook?`.

Selama pekerjaan yang berjalan lama, sistem Anda mungkin tertidur karena tidak aktif, atau mungkin kehilangan konektivitas internet sementara. Hal ini dapat mengganggu koneksi antara browser Anda dan Server Jupyter. Dalam hal ini, Anda mungkin kehilangan output dari sel yang telah Anda jalankan dan kirim dari Server Jupyter.

Jika Anda menjalankan notebook dalam mode tanpa kepala dengan `%execute_notebook`magic, Notebook EMR menangkap output dari sel yang telah berjalan, bahkan jika jaringan lokal mengalami gangguan. Notebook EMR menyimpan output secara bertahap di notebook baru dengan nama yang sama dengan notebook yang telah Anda jalankan. Notebook EMR kemudian menempatkan notebook ke folder baru di dalam ruang kerja. Proses tanpa kepala terjadi pada cluster yang sama dan menggunakan peran layanan`EMR_Notebook_DefaultRole`, tetapi argumen tambahan dapat mengubah nilai default.

Untuk menjalankan notebook dalam mode tanpa kepala, gunakan perintah berikut:

```
%execute_notebook {{<relative-file-path>}}
```

Untuk menentukan ID cluster dan peran layanan untuk menjalankan tanpa kepala, gunakan perintah berikut:

```
%execute_notebook {{<notebook_name>}}.ipynb --cluster-id <emr-cluster-id> --service-role <emr-notebook-service-role>
```

Saat Amazon EMR dan Amazon EC2 berbagi peran instans, peran tersebut memerlukan izin tambahan berikut:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:StartNotebookExecution",
        "elasticmapreduce:DescribeNotebookExecution",
        "ec2:DescribeInstances"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowELASTICMAPREDUCEStartnotebookexecution"
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/EMR_Notebooks_DefaultRole"
      ],
      "Sid": "AllowIAMPassrole"
    }
  ]
}
```

------

**catatan**  
Untuk menggunakan `%execute_notebook`magic, instal `emr-notebooks-magics` paket, versi 0.2.3 atau lebih tinggi.