Ange Egenskaper för Apache core-site.xml Hadoop

Du har ett scenario som kräver att Apache Hadoop-egenskaper anges.

Normalt gör du detta i core-site.xml filen .

I den här artikeln förklarar vi hur du kan ange core-site.xml i ett kluster.

Skapa filen core-site.xml i DBFS

Du måste skapa en core-site.xml fil och spara den i DBFS i klustret.

Ett enkelt sätt att skapa den här filen är via ett bash-skript i en notebook-fil.

Den här exempelkoden skapar hadoop-configs en mapp i klustret och skriver sedan en enda core-site.xml egenskapsfil till mappen.

mkdir -p /dbfs/hadoop-configs/
cat << 'EOF' > /dbfs/hadoop-configs/core-site.xml
 <property>
    <name><property-name-here></name>
    <value><property-value-here></value>
 </property>
EOF

Du kan lägga till flera egenskaper i filen genom att lägga till ytterligare namn/värde-par i skriptet.

Du kan också skapa den här filen lokalt och sedan ladda upp den till klustret.

Skapa ett init-skript som läses in core-site.xml

Den här exempelkoden skapar ett init-skript set-core-site-configs.sh med namnet som använder filen som du nyss core-site.xml skapade.

Om du har laddat upp en core-site.xml fil manuellt och lagrat den någon annanstans bör du config_xml uppdatera värdet i exempelkoden.

dbutils.fs.put("/databricks/scripts/set-core-site-configs.sh", """
#!/bin/bash

echo "Setting core-site.xml configs at `date`"

START_DRIVER_SCRIPT=/databricks/spark/scripts/start_driver.sh
START_WORKER_SCRIPT=/databricks/spark/scripts/start_spark_slave.sh

TMP_DRIVER_SCRIPT=/tmp/start_driver_temp.sh
TMP_WORKER_SCRIPT=/tmp/start_spark_slave_temp.sh

TMP_SCRIPT=/tmp/set_core-site_configs.sh

config_xml="/dbfs/hadoop-configs/core-site.xml"

cat >"$TMP_SCRIPT" <<EOL
#!/bin/bash
## Setting core-site.xml configs

sed -i '/<\/configuration>/{
    r $config_xml
    a \</configuration>
    d
}' /databricks/spark/dbconf/hadoop/core-site.xml

EOL
cat "$TMP_SCRIPT" > "$TMP_DRIVER_SCRIPT"
cat "$TMP_SCRIPT" > "$TMP_WORKER_SCRIPT"

cat "$START_DRIVER_SCRIPT" >> "$TMP_DRIVER_SCRIPT"
mv "$TMP_DRIVER_SCRIPT" "$START_DRIVER_SCRIPT"

cat "$START_WORKER_SCRIPT" >> "$TMP_WORKER_SCRIPT"
mv "$TMP_WORKER_SCRIPT" "$START_WORKER_SCRIPT"

echo "Completed core-site.xml config changes `date`"

""", True)

Koppla init-skriptet till klustret

Du måste konfigurera det nyligen skapade init-skriptet som ett init-skript med klusteromfång.

Om du använde exempelkoden är målet och DBFS Init-skriptsökvägen är dbfs:/databricks/scripts/set-core-site-configs.sh .

Om du har anpassat exempelkoden måste du se till att du anger rätt sökväg och namn för init-skriptet när du kopplar det till klustret.