{"id":10120,"date":"2025-07-19T03:37:13","date_gmt":"2025-07-19T01:37:13","guid":{"rendered":"https:\/\/myoceane.fr\/?p=10120"},"modified":"2025-07-31T04:12:20","modified_gmt":"2025-07-31T02:12:20","slug":"bigdata-customize-spark-distribution-for-arm64","status":"publish","type":"post","link":"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/","title":{"rendered":"[BigData] \u5ba2\u88fd\u5316 Apache Spark \u5728 ARM64 \u67b6\u69cb\u4e0a"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p style=\"text-align: justify;\">\u5728\u5275\u5efa\u4ee5 Spark \u70ba\u57fa\u790e\u7684\u61c9\u7528\u7a0b\u5f0f\u7684\u6642\u5019\uff0c\u57fa\u672c\u4e0a\u90fd\u6703\u76f4\u63a5\u4e0b\u8f09<a href=\"https:\/\/archive.apache.org\/dist\/spark\/\"> Spark \u5b98\u7db2\u6253\u5305\u597d\u7684\u7a0b\u5f0f\u78bc<\/a>\uff0c\u5728\u5b98\u7db2\u4e0a\u7684 Spark \u662f\u4ee5 Intel x86 \u67b6\u69cb\u70ba\u4e3b\u7684\uff0c\u7531\u65bc Java \u4e26\u6c92\u6709\u67b6\u69cb\u4e0a\u7684\u5dee\u7570\uff0c\u6240\u4ee5\u4e4b\u524d\u5728 Spark K8S \u4e26\u6c92\u6709\u9047\u5230\u4e00\u6a23\u7684\u554f\u984c\uff0c\u4f46\u662f\u5728\u4e00\u6b21\u5be6\u52d9\u4e0a\u9a45\u52d5 Spark Standalone \u7684\u6642\u5019\u9047\u5230\u4ee5\u4e0b\u7684\u932f\u8aa4\u8a0a\u606f\uff0c\u4e3b\u8981\u662f\u8ddf External Shuffle Service \u6709\u95dc\uff0c\u9019\u500b\u932f\u8aa4\u4e26\u4e0d\u6703\u51fa\u73fe\u5728\u4ee5 Spark K8S \u70ba\u65b9\u5f0f\u9a45\u52d5\u7684\u61c9\u7528\uff0c\u4f46\u662f External Shuffle Manager \u6703\u9047\u5230\uff0c\u6240\u4ee5\u7b46\u8005\u624d\u6703\u9700\u8981\u5229\u7528 Spark \u63d0\u4f9b\u7684 make-distribution.sh \u6a94\u6848\u53bb\u91cd\u65b0\u6253\u5305 Apache Spark \u5728 ARM64 \u67b6\u69cb\u4e0a\u3002<\/p>\n<h5><strong>Spark 3.3.0 \u4e0a\u7684\u932f\u8aa4\u8a0a\u606f\uff1a<\/strong><\/h5>\n<pre class=\"lang:bash\">01:52:12.422 ERROR SparkUncaughtExceptionHandler - Uncaught exception in thread Thread[main,5,main]\njava.lang.UnsatisfiedLinkError: Could not load library. Reasons: [no leveldbjni64-1.8 in java.library.path, no leveldbjni-1.8 in java.library.path, no leveldbjni in java.library.path, \/tmp\/libleveldbjni-64-1-1645791443138296863.8: \/tmp\/libleveldbjni-64-1-1645791443138296863.8: cannot open shared object file: No such file or directory (Possible cause: can't load AMD 64-bit .so on a AARCH64-bit platform)]\n        at org.fusesource.hawtjni.runtime.Library.doLoad(Library.java:182) ~[jline-2.14.6.jar:?]\n        at org.fusesource.hawtjni.runtime.Library.load(Library.java:140) ~[jline-2.14.6.jar:?]\n        at org.fusesource.leveldbjni.JniDBFactory.&lt;clinit&gt;(JniDBFactory.java:48) ~[leveldbjni-all-1.8.jar:1.8]\n        at org.apache.spark.network.util.LevelDBProvider.initLevelDB(LevelDBProvider.java:48) ~[spark-network-common_2.12-3.3.0.jar:3.3.0]\n        at org.apache.spark.network.shuffle.ExternalShuffleBlockResolver.&lt;init&gt;(ExternalShuffleBlockResolver.java:126) ~[spark-network-shuffle_2.12-3.3.0.jar:3.3.0]\n        at org.apache.spark.network.shuffle.ExternalShuffleBlockResolver.&lt;init&gt;(ExternalShuffleBlockResolver.java:99) ~[spark-network-shuffle_2.12-3.3.0.jar:3.3.0]\n        at org.apache.spark.network.shuffle.ExternalBlockHandler.&lt;init&gt;(ExternalBlockHandler.java:81) ~[spark-network-shuffle_2.12-3.3.0.jar:3.3.0]\n        at org.apache.spark.deploy.ExternalShuffleService.newShuffleBlockHandler(ExternalShuffleService.scala:82) ~[spark-core_2.12-3.3.0.jar:3.3.0]\n        at org.apache.spark.deploy.ExternalShuffleService.&lt;init&gt;(ExternalShuffleService.scala:56) ~[spark-core_2.12-3.3.0.jar:3.3.0]\n        at org.apache.spark.deploy.worker.Worker.&lt;init&gt;(Worker.scala:183) ~[spark-core_2.12-3.3.0.jar:3.3.0]\n        at org.apache.spark.deploy.worker.Worker$.startRpcEnvAndEndpoint(Worker.scala:966) ~[spark-core_2.12-3.3.0.jar:3.3.0]\n        at org.apache.spark.deploy.worker.Worker$.main(Worker.scala:934) ~[spark-core_2.12-3.3.0.jar:3.3.0]\n        at org.apache.spark.deploy.worker.Worker.main(Worker.scala) ~[spark-core_2.12-3.3.0.jar:3.3.0]\n01:52:12.428 INFO  ShutdownHookManager - Shutdown hook called<\/pre>\n<h5>Spark 3.5.3 \u4e0a\u7684\u932f\u8aa4\u8a0a\u606f<\/h5>\n<pre class=\"lang:bash\">23:26:43.438 ERROR SparkUncaughtExceptionHandler - Uncaught exception in thread Thread[main,5,main]\njava.lang.UnsatisfiedLinkError: Could not load library. Reasons: [no leveldbjni64-1.8 in java.library.path: \/usr\/java\/packages\/lib:\/usr\/lib\/aarch64-linux-gnu\/jni:\/lib\/aarch64-linux-gnu:\/usr\/lib\/aarch64-linux-gnu:\/usr\/lib\/jni:\/lib:\/usr\/lib, no leveldbjni-1.8 in java.library.path: \/usr\/java\/packages\/lib:\/usr\/lib\/aarch64-linux-gnu\/jni:\/lib\/aarch64-linux-gnu:\/usr\/lib\/aarch64-linux-gnu:\/usr\/lib\/jni:\/lib:\/usr\/lib, no leveldbjni in java.library.path: \/usr\/java\/packages\/lib:\/usr\/lib\/aarch64-linux-gnu\/jni:\/lib\/aarch64-linux-gnu:\/usr\/lib\/aarch64-linux-gnu:\/usr\/lib\/jni:\/lib:\/usr\/lib, \/tmp\/libleveldbjni-64-1-5086456728708123234.8: \/tmp\/libleveldbjni-64-1-5086456728708123234.8: cannot open shared object file: No such file or directory (Possible cause: can't load AMD 64 .so on a AARCH64 platform)]\n\tat org.fusesource.hawtjni.runtime.Library.doLoad(Library.java:182) ~[leveldbjni-all-1.8.jar:1.8]\n\tat org.fusesource.hawtjni.runtime.Library.load(Library.java:140) ~[leveldbjni-all-1.8.jar:1.8]\n\tat org.fusesource.leveldbjni.JniDBFactory.&lt;clinit&gt;(JniDBFactory.java:48) ~[leveldbjni-all-1.8.jar:1.8]\n\tat org.apache.spark.network.util.LevelDBProvider.initLevelDB(LevelDBProvider.java:48) ~[spark-network-common_2.12-3.5.3.jar:3.5.3]\n\tat org.apache.spark.network.util.DBProvider.initDB(DBProvider.java:40) ~[spark-network-common_2.12-3.5.3.jar:3.5.3]\n\tat org.apache.spark.network.shuffle.ExternalShuffleBlockResolver.&lt;init&gt;(ExternalShuffleBlockResolver.java:131) ~[spark-network-shuffle_2.12-3.5.3.jar:3.5.3]\n\tat org.apache.spark.network.shuffle.ExternalShuffleBlockResolver.&lt;init&gt;(ExternalShuffleBlockResolver.java:100) ~[spark-network-shuffle_2.12-3.5.3.jar:3.5.3]\n\tat org.apache.spark.network.shuffle.ExternalBlockHandler.&lt;init&gt;(ExternalBlockHandler.java:81) ~[spark-network-shuffle_2.12-3.5.3.jar:3.5.3]\n\tat org.apache.spark.deploy.ExternalShuffleService.newShuffleBlockHandler(ExternalShuffleService.scala:88) ~[spark-core_2.12-3.5.3.jar:3.5.3]\n\tat org.apache.spark.deploy.ExternalShuffleService.&lt;init&gt;(ExternalShuffleService.scala:57) ~[spark-core_2.12-3.5.3.jar:3.5.3]\n\tat org.apache.spark.deploy.worker.Worker.&lt;init&gt;(Worker.scala:183) ~[spark-core_2.12-3.5.3.jar:3.5.3]\n\tat org.apache.spark.deploy.worker.Worker$.startRpcEnvAndEndpoint(Worker.scala:967) ~[spark-core_2.12-3.5.3.jar:3.5.3]\n\tat org.apache.spark.deploy.worker.Worker$.main(Worker.scala:935) ~[spark-core_2.12-3.5.3.jar:3.5.3]\n\tat org.apache.spark.deploy.worker.Worker.main(Worker.scala) ~[spark-core_2.12-3.5.3.jar:3.5.3]\n23:26:43.452 INFO  ShutdownHookManager - Shutdown hook called<\/pre>\n<h4>\u5229\u7528 make-distribution.sh \u7de8\u8b6f Spark \u7a0b\u5f0f\u78bc<\/h4>\n<p>\u5617\u8a66\u7528 aarch64 \u70ba\u67b6\u69cb\u53bb\u91cd\u65b0\u6253\u5305 Spark \u7684\u539f\u59cb\u78bc\uff0c\u8981\u7279\u5225\u6ce8\u610f\u8981\u5728 arm64 \u7684 java \u4e4b\u4e0b\u57f7\u884c\u4ee5\u4e0b\u7684\u6307\u4ee4\uff1a<\/p>\n<pre class=\"lang:bash\">.\/dev\/make-distribution.sh --name hadoop3 --pip --r --tgz -Psparkr -Phive -Phive-thriftserver -Pyarn -Pkubernetes -Phadoop-3 -Paarch64 -Dhadoop.version=3.3.4 -e -DskipTests<\/pre>\n<p style=\"text-align: justify;\"><strong>Note: \u5982\u679c\u662f\u8981\u7de8\u8b6f\u7d66 ARM64 \u7684\u74b0\u5883\u4f7f\u7528\uff0c\u5fc5\u9808\u8981\u52a0 -Paarch64 \u9019\u4e00\u500b profile\uff0c\u7b46\u8005\u4e00\u958b\u59cb\u56e0\u70ba\u6c92\u6709\u52a0\uff0c\u6240\u4ee5\u5c0e\u81f4\u5728\u7de8\u8b6f\u7684\u6642\u5019\u9084\u662f\u4f7f\u7528\u5230\u539f\u672c\u7684 <a href=\"https:\/\/mvnrepository.com\/artifact\/org.fusesource.leveldbjni\/leveldbjni-all\">org.fusesource.leveldbjni \u88e1\u9762\u7684 leveldbjni-1.8.jar \u6a94<\/a>\uff0c\u9019\u6703\u5c0e\u81f4\u932f\u8aa4\u6301\u7e8c\u767c\u751f\uff0c\u900f\u904e\u89c0\u5bdf Spark \u5c08\u6848\u7684 dependency \u53ef\u4ee5\u89c0\u5bdf\u5230\u9664\u4e86 pom.xml \u672c\u9ad4\u6703\u7528\u5230 leveldbjni \u4e4b\u5916\uff0ckvstore, network-common, spark-network-common \u7b49\u7b49 project \u90fd\u6703\u4f7f\u7528\u5230\u3002<\/strong><\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"330\" src=\"https:\/\/myoceane.fr\/wp-content\/uploads\/2025\/07\/leveldbjni_spark_dependency-1024x330.png\" alt=\"\" class=\"wp-image-10150\" srcset=\"https:\/\/myoceane.fr\/wp-content\/uploads\/2025\/07\/leveldbjni_spark_dependency-1024x330.png 1024w, https:\/\/myoceane.fr\/wp-content\/uploads\/2025\/07\/leveldbjni_spark_dependency-300x97.png 300w, https:\/\/myoceane.fr\/wp-content\/uploads\/2025\/07\/leveldbjni_spark_dependency-768x248.png 768w, https:\/\/myoceane.fr\/wp-content\/uploads\/2025\/07\/leveldbjni_spark_dependency.png 1348w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n<p style=\"text-align: justify;\">\u5be6\u969b\u53bb\u6aa2\u67e5\u4e5f\u53ef\u4ee5\u767c\u73fe\u5229\u7528 <a href=\"https:\/\/mvnrepository.com\/artifact\/org.openlabtesting.leveldbjni\/leveldbjni-all\/1.8\">org.openlabtesting.leveldbjni \u63d0\u4f9b\u7684 leveldbjni-1.8.jar<\/a> \u88e1\u9762\u662f\u6709\u63d0\u4f9b aarch64 \u4f7f\u7528\u7684 .so \u6a94\u3002<\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"695\" src=\"https:\/\/myoceane.fr\/wp-content\/uploads\/2025\/07\/leveldbjni_jar-1024x695.png\" alt=\"\" class=\"wp-image-10151\" srcset=\"https:\/\/myoceane.fr\/wp-content\/uploads\/2025\/07\/leveldbjni_jar-1024x695.png 1024w, https:\/\/myoceane.fr\/wp-content\/uploads\/2025\/07\/leveldbjni_jar-300x204.png 300w, https:\/\/myoceane.fr\/wp-content\/uploads\/2025\/07\/leveldbjni_jar-768x521.png 768w, https:\/\/myoceane.fr\/wp-content\/uploads\/2025\/07\/leveldbjni_jar.png 1320w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n<p>\u958b\u59cb\u57f7\u884c\u7684\u6642\u5019\uff0c\u51fa\u73fe\u4ee5\u4e0b\u7684\u7de8\u8b6f\u8a0a\u606f\u53ef\u4ee5\u6aa2\u67e5\u662f\u5426\u6709\u4f7f\u7528\u6b63\u78ba\u7684\u7de8\u8b6f\u74b0\u5883\uff0c\u7531\u65bc\u672c\u7bc7\u662f\u60f3\u8981\u5728 ARM64 \u7684\u67b6\u69cb\u4e2d\u6253\u5305\uff0c\u6240\u4ee5 os.detected.arch \u5fc5\u9808\u8981\u662f <strong>aarch_64<\/strong>\u3002<\/p>\n<pre class=\"lang:bash\">[INFO] Error stacktraces are turned on.\n[INFO] Scanning for projects...\n[INFO] ------------------------------------------------------------------------\n[INFO] Detecting the operating system and CPU architecture\n[INFO] ------------------------------------------------------------------------\n[INFO] os.detected.name: osx\n[INFO] os.detected.arch: aarch_64\n[INFO] os.detected.version: 14.6\n[INFO] os.detected.version.major: 14\n[INFO] os.detected.version.minor: 6\n[INFO] os.detected.classifier: osx-aarch_64\n[INFO] ------------------------------------------------------------------------<\/pre>\n<p>\u5047\u8a2d\u6210\u529f\u5229\u7528 Maven \u7de8\u8b6f\u6210\u529f\u7684\u8a71\uff0c\u6703\u986f\u793a\u4ee5\u4e0b\u7684\u8a0a\u606f\uff1a<\/p>\n<pre class=\"lang:bash\">[INFO] ------------------------------------------------------------------------\n[INFO] Reactor Summary for Spark Project Parent POM 3.5.3:\n[INFO]\n[INFO] Spark Project Parent POM ........................... SUCCESS [  2.998 s]\n[INFO] Spark Project Tags ................................. SUCCESS [  4.224 s]\n[INFO] Spark Project Sketch ............................... SUCCESS [  2.017 s]\n[INFO] Spark Project Local DB ............................. SUCCESS [  3.241 s]\n[INFO] Spark Project Common Utils ......................... SUCCESS [  8.526 s]\n[INFO] Spark Project Networking ........................... SUCCESS [  4.579 s]\n[INFO] Spark Project Shuffle Streaming Service ............ SUCCESS [  3.266 s]\n[INFO] Spark Project Unsafe ............................... SUCCESS [  2.728 s]\n[INFO] Spark Project Launcher ............................. SUCCESS [  2.892 s]\n[INFO] Spark Project Core ................................. SUCCESS [01:08 min]\n[INFO] Spark Project ML Local Library ..................... SUCCESS [ 11.242 s]\n[INFO] Spark Project GraphX ............................... SUCCESS [ 15.844 s]\n[INFO] Spark Project Streaming ............................ SUCCESS [ 15.650 s]\n[INFO] Spark Project SQL API .............................. SUCCESS [ 16.183 s]\n[INFO] Spark Project Catalyst ............................. SUCCESS [ 43.525 s]\n[INFO] Spark Project SQL .................................. SUCCESS [ 42.269 s]\n[INFO] Spark Project ML Library ........................... SUCCESS [ 48.001 s]\n[INFO] Spark Project Tools ................................ SUCCESS [  4.290 s]\n[INFO] Spark Project Hive ................................. SUCCESS [ 19.292 s]\n[INFO] Spark Project REPL ................................. SUCCESS [  7.000 s]\n[INFO] Spark Project YARN Shuffle Service ................. SUCCESS [ 32.032 s]\n[INFO] Spark Project YARN ................................. SUCCESS [ 11.904 s]\n[INFO] Spark Project Kubernetes ........................... SUCCESS [ 11.906 s]\n[INFO] Spark Project Hive Thrift Server ................... SUCCESS [ 14.014 s]\n[INFO] Spark Project Assembly ............................. SUCCESS [  4.154 s]\n[INFO] Kafka 0.10+ Token Provider for Streaming ........... SUCCESS [  6.091 s]\n[INFO] Spark Integration for Kafka 0.10 ................... SUCCESS [  9.020 s]\n[INFO] Kafka 0.10+ Source for Structured Streaming ........ SUCCESS [ 11.082 s]\n[INFO] Spark Project Examples ............................. SUCCESS [ 26.970 s]\n[INFO] Spark Integration for Kafka 0.10 Assembly .......... SUCCESS [  2.161 s]\n[INFO] Spark Avro ......................................... SUCCESS [  9.767 s]\n[INFO] Spark Project Connect Common ....................... SUCCESS [ 24.701 s]\n[INFO] Spark Protobuf ..................................... SUCCESS [  8.417 s]\n[INFO] Spark Project Connect Server ....................... SUCCESS [ 21.896 s]\n[INFO] Spark Project Connect Client ....................... SUCCESS [ 25.447 s]\n[INFO] ------------------------------------------------------------------------\n[INFO] BUILD SUCCESS\n[INFO] ------------------------------------------------------------------------\n[INFO] Total time:  09:06 min\n[INFO] Finished at: 2025-07-18T23:20:09+08:00\n[INFO] ------------------------------------------------------------------------<\/pre>\n<p>\u4e4b\u5f8c\u5c31\u6703\u958b\u59cb\u6253\u5305\u5176\u4ed6\u7684\u61c9\u7528\u7a0b\u5f0f\u4f8b\u5982\uff1apyspark \u8207 SparkR \u7b49\u7b49\u7d42\u7aef\u7a0b\u5f0f\uff0c\u7b46\u8005\u5728\u7de8\u8b6f\u7684\u6642\u5019\uff0c\u4e00\u958b\u59cb\u51fa\u73fe\u4ee5\u4e0b\u7684\u932f\u8aa4\u8a0a\u606f\u5c0e\u81f4\u6253\u5305\u5931\u6557\uff0c\u5f9e\u5b57\u9762\u662f\u4ee5\u70ba\u662f\u5e7e\u500b Rd \u6a94\u51fa\u73fe\u7684 syntax error \u5c0e\u81f4\u554f\u984c\u3002<\/p>\n<pre class=\"lang:bash\">Use inherits() (or maybe is()) instead.\n* checking Rd files ... NOTE\ncheckRd: (-1) column_collection_functions.Rd:324: Lost braces\n   324 |     \\url{https:\/\/spark.apache.org\/docs\/latest\/sql-data-sources-json.html#data-source-option}{Data Source Option}\n       |                                                                                             ^\ncheckRd: (-1) column_collection_functions.Rd:332: Lost braces\n   332 |     \\url{https:\/\/spark.apache.org\/docs\/latest\/sql-data-sources-csv.html#data-source-option}{Data Source Option}\n       |                                                                                            ^\ncheckRd: (-1) read.jdbc.Rd:45: Lost braces\n    45 | \\url{https:\/\/spark.apache.org\/docs\/latest\/sql-data-sources-jdbc.html#data-source-option}{Data Source Option} in the version you use.\n       |                                                                                         ^\ncheckRd: (-1) read.json.Rd:14: Lost braces\n    14 | \\url{https:\/\/spark.apache.org\/docs\/latest\/sql-data-sources-json.html#data-source-option}{Data Source Option} in the version you use.}\n       |                                                                                         ^\ncheckRd: (-1) read.orc.Rd:14: Lost braces\n    14 | \\url{https:\/\/spark.apache.org\/docs\/latest\/sql-data-sources-orc.html#data-source-option}{Data Source Option} in the version you use.}\n       |                                                                                        ^\ncheckRd: (-1) read.parquet.Rd:14: Lost braces\n    14 | \\url{https:\/\/spark.apache.org\/docs\/latest\/sql-data-sources-parquet.html#data-source-option}{Data Source Option} in the version you use.}\n       |                                                                                            ^\ncheckRd: (-1) read.text.Rd:14: Lost braces\n    14 | \\url{https:\/\/spark.apache.org\/docs\/latest\/sql-data-sources-text.html#data-source-option}{Data Source Option} in the version you use.}\n       |                                                                                         ^\ncheckRd: (-1) repartition.Rd:24: Lost braces in \\itemize; meant \\describe ?\ncheckRd: (-1) repartition.Rd:25-26: Lost braces in \\itemize; meant \\describe ?\ncheckRd: (-1) repartition.Rd:27-28: Lost braces in \\itemize; meant \\describe ?\ncheckRd: (-1) repartitionByRange.Rd:24-25: Lost braces in \\itemize; meant \\describe ?\ncheckRd: (-1) repartitionByRange.Rd:26-27: Lost braces in \\itemize; meant \\describe ?\ncheckRd: (-1) spark.kmeans.Rd:69: Lost braces; missing escapes or markup?\n    69 |         (cluster centers of the transformed data), {is.loaded} (whether the model is loaded\n       |                                                    ^\ncheckRd: (-1) write.jdbc.Rd:28-29: Lost braces\n    28 | \\url{https:\/\/spark.apache.org\/docs\/latest\/sql-data-sources-jdbc.html#data-source-option}{\n       |                                                                                         ^\ncheckRd: (-1) write.json.Rd:19: Lost braces\n    19 | \\url{https:\/\/spark.apache.org\/docs\/latest\/sql-data-sources-json.html#data-source-option}{Data Source Option} in the version you use.}\n       |                                                                                         ^\ncheckRd: (-1) write.orc.Rd:19: Lost braces\n    19 | \\url{https:\/\/spark.apache.org\/docs\/latest\/sql-data-sources-orc.html#data-source-option}{Data Source Option} in the version you use.}\n       |                                                                                        ^\ncheckRd: (-1) write.parquet.Rd:19: Lost braces\n    19 | \\url{https:\/\/spark.apache.org\/docs\/latest\/sql-data-sources-parquet.html#data-source-option}{Data Source Option} in the version you use.}\n       |                                                                                            ^\ncheckRd: (-1) write.text.Rd:19: Lost braces\n    19 | \\url{https:\/\/spark.apache.org\/docs\/latest\/sql-data-sources-text.html#data-source-option}{Data Source Option} in the version you use.}\n       |\n* checking Rd metadata ... OK\n* checking Rd line widths ... OK\n* checking Rd cross-references ... OK\n* checking for missing documentation entries ... OK\n* checking for code\/documentation mismatches ... OK\n* checking Rd \\usage sections ... OK\n* checking Rd contents ... OK\n* checking for unstated dependencies in examples ... OK\n* checking installed files from \u2018inst\/doc\u2019 ... OK\n* checking files in \u2018vignettes\u2019 ... OK\n* checking examples ... OK\n* checking for unstated dependencies in \u2018tests\u2019 ... OK\n* checking tests ... SKIPPED\n* checking for unstated dependencies in vignettes ... OK\n* checking package vignettes ... OK\n* checking re-building of vignette outputs ... [8s\/47s] OK\n* checking PDF version of manual ... WARNING\nLaTeX errors when creating PDF version.\nThis typically indicates Rd problems.\n* checking PDF version of manual without index ... ERROR\nRe-running with no redirection of stdout\/stderr.\nHmm ... looks like a package\nConverting parsed Rd's to LaTeX ..........................\nCreating pdf output from LaTeX ...\nError in texi2dvi(file = file, pdf = TRUE, clean = clean, quiet = quiet,  :\n  pdflatex is not available\nError in texi2dvi(file = file, pdf = TRUE, clean = clean, quiet = quiet,  :\n  pdflatex is not available\n\u547c\u53eb tools::texi2pdf()\u6642\u767c\u751f\u932f\u8aa4\n\n...\n\n* checking for non-standard things in the check directory ... NOTE\nFound the following files\/directories:\n  \u2018.DS_Store\u2019 \u2018SparkR-manual.tex\u2019\n* checking for detritus in the temp directory ... OK\n* DONE\n\nStatus: 1 ERROR, 1 WARNING, 8 NOTEs<\/pre>\n<h5><strong>\u89e3\u6c7a\u65b9\u6cd5\uff1a\u5b89\u88dd TinyTex\u00a0<\/strong><\/h5>\n<p>\u5229\u7528\u4ee5\u4e0b\u6307\u4ee4\u5728\u5730\u7aef\u7684 R \u74b0\u5883\u88e1\u9762\u5b89\u88dd TinyTex\u3002<\/p>\n<pre class=\"lang:r\">install.packages(\"tinytex\")\ntinytex::install_tinytex()<\/pre>\n<p>\u63a5\u8457\u5728\u5229\u7528\u4ee5\u4e0b\u6307\u4ee4\u6aa2\u67e5\u662f\u5426\u5b89\u88dd\u6210\u529f\uff1a<\/p>\n<pre class=\"lang:r\">tinytex::tlmgr_path()<\/pre>\n\n\n<p><a href=\"https:\/\/myoceane.fr\/?s=Spark\">\u66f4\u591a\u6709\u95dc\u6ab8\u6aac\u7238 Spark \u7684\u6587\u7ae0\u9023\u7d50<\/a><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5728\u5275\u5efa\u4ee5 Spark \u70ba\u57fa\u790e\u7684\u61c9\u7528\u7a0b\u5f0f\u7684\u6642\u5019\uff0c\u57fa\u672c\u4e0a\u90fd\u6703\u76f4\u63a5\u4e0b\u8f09 Spark \u5b98\u7db2\u6253\u5305\u597d\u7684\u7a0b\u5f0f\u78bc\uff0c\u5728\u5b98\u7db2\u4e0a\u7684 Spark \u662f\u4ee5 Intel x86 \u67b6\u69cb\u70ba\u4e3b\u7684\uff0c\u7531\u65bc Java \u4e26\u6c92\u6709\u67b6\u69cb\u4e0a\u7684\u5dee\u7570\uff0c\u6240\u4ee5\u4e4b\u524d\u5728 Spark K8S \u4e26\u6c92\u6709\u9047\u5230\u4e00\u6a23\u7684\u554f\u984c\uff0c\u4f46\u662f\u5728\u4e00\u6b21\u5be6\u52d9\u4e0a\u9a45\u52d5 Spark Standalone \u7684\u6642\u5019\u9047\u5230\u4ee5\u4e0b\u7684\u932f\u8aa4\u8a0a\u606f\uff0c\u4e3b\u8981\u662f\u8ddf External Shuffle Service \u6709\u95dc\uff0c\u9019\u500b\u932f\u8aa4\u4e26\u4e0d\u6703\u51fa\u73fe\u5728\u4ee5 Spark K8S \u70ba\u65b9\u5f0f\u9a45\u52d5\u7684\u61c9\u7528\uff0c\u4f46\u662f External Shuffle Manager \u6703\u9047\u5230\uff0c\u6240\u4ee5\u7b46\u8005\u624d\u6703\u9700\u8981\u5229\u7528 Spark \u63d0\u4f9b\u7684 make-distribution.sh \u6a94\u6848\u53bb\u91cd\u65b0\u6253\u5305 Apache Spark \u5728 ARM64 \u67b6\u69cb\u4e0a\u3002<\/p>\n","protected":false},"author":1,"featured_media":5486,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,14],"tags":[1913,1914,1915],"class_list":["post-10120","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bigdata-ml","category-it-technology","tag-arm64","tag-spark-distribution","tag-standalone"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[BigData] \u5ba2\u88fd\u5316 Apache Spark \u5728 ARM64 \u67b6\u69cb\u4e0a - \u60f3\u65b9\u6d89\u6cd5 - \u91cf\u74f6\u5916\u7684\u5929\u7a7a M-Y-Oceane<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[BigData] \u5ba2\u88fd\u5316 Apache Spark \u5728 ARM64 \u67b6\u69cb\u4e0a - \u60f3\u65b9\u6d89\u6cd5 - \u91cf\u74f6\u5916\u7684\u5929\u7a7a M-Y-Oceane\" \/>\n<meta property=\"og:description\" content=\"\u5728\u5275\u5efa\u4ee5 Spark \u70ba\u57fa\u790e\u7684\u61c9\u7528\u7a0b\u5f0f\u7684\u6642\u5019\uff0c\u57fa\u672c\u4e0a\u90fd\u6703\u76f4\u63a5\u4e0b\u8f09 Spark \u5b98\u7db2\u6253\u5305\u597d\u7684\u7a0b\u5f0f\u78bc\uff0c\u5728\u5b98\u7db2\u4e0a\u7684 Spark \u662f\u4ee5 Intel x86 \u67b6\u69cb\u70ba\u4e3b\u7684\uff0c\u7531\u65bc Java \u4e26\u6c92\u6709\u67b6\u69cb\u4e0a\u7684\u5dee\u7570\uff0c\u6240\u4ee5\u4e4b\u524d\u5728 Spark K8S \u4e26\u6c92\u6709\u9047\u5230\u4e00\u6a23\u7684\u554f\u984c\uff0c\u4f46\u662f\u5728\u4e00\u6b21\u5be6\u52d9\u4e0a\u9a45\u52d5 Spark Standalone \u7684\u6642\u5019\u9047\u5230\u4ee5\u4e0b\u7684\u932f\u8aa4\u8a0a\u606f\uff0c\u4e3b\u8981\u662f\u8ddf External Shuffle Service \u6709\u95dc\uff0c\u9019\u500b\u932f\u8aa4\u4e26\u4e0d\u6703\u51fa\u73fe\u5728\u4ee5 Spark K8S \u70ba\u65b9\u5f0f\u9a45\u52d5\u7684\u61c9\u7528\uff0c\u4f46\u662f External Shuffle Manager \u6703\u9047\u5230\uff0c\u6240\u4ee5\u7b46\u8005\u624d\u6703\u9700\u8981\u5229\u7528 Spark \u63d0\u4f9b\u7684 make-distribution.sh \u6a94\u6848\u53bb\u91cd\u65b0\u6253\u5305 Apache Spark \u5728 ARM64 \u67b6\u69cb\u4e0a\u3002\" \/>\n<meta property=\"og:url\" content=\"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/\" \/>\n<meta property=\"og:site_name\" content=\"\u60f3\u65b9\u6d89\u6cd5 - \u91cf\u74f6\u5916\u7684\u5929\u7a7a M-Y-Oceane\" \/>\n<meta property=\"article:published_time\" content=\"2025-07-19T01:37:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-31T02:12:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/myoceane.fr\/wp-content\/uploads\/2020\/06\/Apache_Spark_logo.svg_.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"625\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"\u6ab8\u6aac\u7238\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u6ab8\u6aac\u7238\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/\"},\"author\":{\"name\":\"\u6ab8\u6aac\u7238\",\"@id\":\"https:\/\/myoceane.fr\/#\/schema\/person\/4a4552fb8c27693083d465e12db7658b\"},\"headline\":\"[BigData] \u5ba2\u88fd\u5316 Apache Spark \u5728 ARM64 \u67b6\u69cb\u4e0a\",\"datePublished\":\"2025-07-19T01:37:13+00:00\",\"dateModified\":\"2025-07-31T02:12:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/\"},\"wordCount\":79,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/myoceane.fr\/#\/schema\/person\/4a4552fb8c27693083d465e12db7658b\"},\"image\":{\"@id\":\"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/myoceane.fr\/wp-content\/uploads\/2020\/06\/Apache_Spark_logo.svg_.png\",\"keywords\":[\"ARM64\",\"Spark Distribution\",\"Standalone\"],\"articleSection\":[\"Big Data &amp; Machine Learning\",\"IT Technology\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/\",\"url\":\"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/\",\"name\":\"[BigData] \u5ba2\u88fd\u5316 Apache Spark \u5728 ARM64 \u67b6\u69cb\u4e0a - \u60f3\u65b9\u6d89\u6cd5 - \u91cf\u74f6\u5916\u7684\u5929\u7a7a M-Y-Oceane\",\"isPartOf\":{\"@id\":\"https:\/\/myoceane.fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/myoceane.fr\/wp-content\/uploads\/2020\/06\/Apache_Spark_logo.svg_.png\",\"datePublished\":\"2025-07-19T01:37:13+00:00\",\"dateModified\":\"2025-07-31T02:12:20+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/#primaryimage\",\"url\":\"https:\/\/myoceane.fr\/wp-content\/uploads\/2020\/06\/Apache_Spark_logo.svg_.png\",\"contentUrl\":\"https:\/\/myoceane.fr\/wp-content\/uploads\/2020\/06\/Apache_Spark_logo.svg_.png\",\"width\":1200,\"height\":625,\"caption\":\"apache-spark\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/myoceane.fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[BigData] \u5ba2\u88fd\u5316 Apache Spark \u5728 ARM64 \u67b6\u69cb\u4e0a\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/myoceane.fr\/#website\",\"url\":\"https:\/\/myoceane.fr\/\",\"name\":\"M-Y-Oceane \u60f3\u65b9\u6d89\u6cd5\u3002\u91cf\u74f6\u5916\u7684\u5929\u7a7a\",\"description\":\"\u60f3\u65b9\u6d89\u6cd5, France, Taiwan, Health, Information Technology\",\"publisher\":{\"@id\":\"https:\/\/myoceane.fr\/#\/schema\/person\/4a4552fb8c27693083d465e12db7658b\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/myoceane.fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/myoceane.fr\/#\/schema\/person\/4a4552fb8c27693083d465e12db7658b\",\"name\":\"\u6ab8\u6aac\u7238\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/myoceane.fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6cc678684664f8ad45a8d56a6630b183?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6cc678684664f8ad45a8d56a6630b183?s=96&d=mm&r=g\",\"caption\":\"\u6ab8\u6aac\u7238\"},\"logo\":{\"@id\":\"https:\/\/myoceane.fr\/#\/schema\/person\/image\/\"},\"url\":\"https:\/\/myoceane.fr\/index.php\/author\/johnny5584767gmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[BigData] \u5ba2\u88fd\u5316 Apache Spark \u5728 ARM64 \u67b6\u69cb\u4e0a - \u60f3\u65b9\u6d89\u6cd5 - \u91cf\u74f6\u5916\u7684\u5929\u7a7a M-Y-Oceane","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/","og_locale":"en_US","og_type":"article","og_title":"[BigData] \u5ba2\u88fd\u5316 Apache Spark \u5728 ARM64 \u67b6\u69cb\u4e0a - \u60f3\u65b9\u6d89\u6cd5 - \u91cf\u74f6\u5916\u7684\u5929\u7a7a M-Y-Oceane","og_description":"\u5728\u5275\u5efa\u4ee5 Spark \u70ba\u57fa\u790e\u7684\u61c9\u7528\u7a0b\u5f0f\u7684\u6642\u5019\uff0c\u57fa\u672c\u4e0a\u90fd\u6703\u76f4\u63a5\u4e0b\u8f09 Spark \u5b98\u7db2\u6253\u5305\u597d\u7684\u7a0b\u5f0f\u78bc\uff0c\u5728\u5b98\u7db2\u4e0a\u7684 Spark \u662f\u4ee5 Intel x86 \u67b6\u69cb\u70ba\u4e3b\u7684\uff0c\u7531\u65bc Java \u4e26\u6c92\u6709\u67b6\u69cb\u4e0a\u7684\u5dee\u7570\uff0c\u6240\u4ee5\u4e4b\u524d\u5728 Spark K8S \u4e26\u6c92\u6709\u9047\u5230\u4e00\u6a23\u7684\u554f\u984c\uff0c\u4f46\u662f\u5728\u4e00\u6b21\u5be6\u52d9\u4e0a\u9a45\u52d5 Spark Standalone \u7684\u6642\u5019\u9047\u5230\u4ee5\u4e0b\u7684\u932f\u8aa4\u8a0a\u606f\uff0c\u4e3b\u8981\u662f\u8ddf External Shuffle Service \u6709\u95dc\uff0c\u9019\u500b\u932f\u8aa4\u4e26\u4e0d\u6703\u51fa\u73fe\u5728\u4ee5 Spark K8S \u70ba\u65b9\u5f0f\u9a45\u52d5\u7684\u61c9\u7528\uff0c\u4f46\u662f External Shuffle Manager \u6703\u9047\u5230\uff0c\u6240\u4ee5\u7b46\u8005\u624d\u6703\u9700\u8981\u5229\u7528 Spark \u63d0\u4f9b\u7684 make-distribution.sh \u6a94\u6848\u53bb\u91cd\u65b0\u6253\u5305 Apache Spark \u5728 ARM64 \u67b6\u69cb\u4e0a\u3002","og_url":"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/","og_site_name":"\u60f3\u65b9\u6d89\u6cd5 - \u91cf\u74f6\u5916\u7684\u5929\u7a7a M-Y-Oceane","article_published_time":"2025-07-19T01:37:13+00:00","article_modified_time":"2025-07-31T02:12:20+00:00","og_image":[{"width":1200,"height":625,"url":"https:\/\/myoceane.fr\/wp-content\/uploads\/2020\/06\/Apache_Spark_logo.svg_.png","type":"image\/png"}],"author":"\u6ab8\u6aac\u7238","twitter_card":"summary_large_image","twitter_misc":{"Written by":"\u6ab8\u6aac\u7238","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/#article","isPartOf":{"@id":"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/"},"author":{"name":"\u6ab8\u6aac\u7238","@id":"https:\/\/myoceane.fr\/#\/schema\/person\/4a4552fb8c27693083d465e12db7658b"},"headline":"[BigData] \u5ba2\u88fd\u5316 Apache Spark \u5728 ARM64 \u67b6\u69cb\u4e0a","datePublished":"2025-07-19T01:37:13+00:00","dateModified":"2025-07-31T02:12:20+00:00","mainEntityOfPage":{"@id":"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/"},"wordCount":79,"commentCount":0,"publisher":{"@id":"https:\/\/myoceane.fr\/#\/schema\/person\/4a4552fb8c27693083d465e12db7658b"},"image":{"@id":"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/#primaryimage"},"thumbnailUrl":"https:\/\/myoceane.fr\/wp-content\/uploads\/2020\/06\/Apache_Spark_logo.svg_.png","keywords":["ARM64","Spark Distribution","Standalone"],"articleSection":["Big Data &amp; Machine Learning","IT Technology"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/","url":"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/","name":"[BigData] \u5ba2\u88fd\u5316 Apache Spark \u5728 ARM64 \u67b6\u69cb\u4e0a - \u60f3\u65b9\u6d89\u6cd5 - \u91cf\u74f6\u5916\u7684\u5929\u7a7a M-Y-Oceane","isPartOf":{"@id":"https:\/\/myoceane.fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/#primaryimage"},"image":{"@id":"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/#primaryimage"},"thumbnailUrl":"https:\/\/myoceane.fr\/wp-content\/uploads\/2020\/06\/Apache_Spark_logo.svg_.png","datePublished":"2025-07-19T01:37:13+00:00","dateModified":"2025-07-31T02:12:20+00:00","breadcrumb":{"@id":"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/#primaryimage","url":"https:\/\/myoceane.fr\/wp-content\/uploads\/2020\/06\/Apache_Spark_logo.svg_.png","contentUrl":"https:\/\/myoceane.fr\/wp-content\/uploads\/2020\/06\/Apache_Spark_logo.svg_.png","width":1200,"height":625,"caption":"apache-spark"},{"@type":"BreadcrumbList","@id":"https:\/\/myoceane.fr\/index.php\/bigdata-customize-spark-distribution-for-arm64\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/myoceane.fr\/"},{"@type":"ListItem","position":2,"name":"[BigData] \u5ba2\u88fd\u5316 Apache Spark \u5728 ARM64 \u67b6\u69cb\u4e0a"}]},{"@type":"WebSite","@id":"https:\/\/myoceane.fr\/#website","url":"https:\/\/myoceane.fr\/","name":"M-Y-Oceane \u60f3\u65b9\u6d89\u6cd5\u3002\u91cf\u74f6\u5916\u7684\u5929\u7a7a","description":"\u60f3\u65b9\u6d89\u6cd5, France, Taiwan, Health, Information Technology","publisher":{"@id":"https:\/\/myoceane.fr\/#\/schema\/person\/4a4552fb8c27693083d465e12db7658b"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/myoceane.fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/myoceane.fr\/#\/schema\/person\/4a4552fb8c27693083d465e12db7658b","name":"\u6ab8\u6aac\u7238","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/myoceane.fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6cc678684664f8ad45a8d56a6630b183?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6cc678684664f8ad45a8d56a6630b183?s=96&d=mm&r=g","caption":"\u6ab8\u6aac\u7238"},"logo":{"@id":"https:\/\/myoceane.fr\/#\/schema\/person\/image\/"},"url":"https:\/\/myoceane.fr\/index.php\/author\/johnny5584767gmail-com\/"}]}},"amp_enabled":false,"_links":{"self":[{"href":"https:\/\/myoceane.fr\/index.php\/wp-json\/wp\/v2\/posts\/10120","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/myoceane.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/myoceane.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/myoceane.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/myoceane.fr\/index.php\/wp-json\/wp\/v2\/comments?post=10120"}],"version-history":[{"count":36,"href":"https:\/\/myoceane.fr\/index.php\/wp-json\/wp\/v2\/posts\/10120\/revisions"}],"predecessor-version":[{"id":10162,"href":"https:\/\/myoceane.fr\/index.php\/wp-json\/wp\/v2\/posts\/10120\/revisions\/10162"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/myoceane.fr\/index.php\/wp-json\/wp\/v2\/media\/5486"}],"wp:attachment":[{"href":"https:\/\/myoceane.fr\/index.php\/wp-json\/wp\/v2\/media?parent=10120"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/myoceane.fr\/index.php\/wp-json\/wp\/v2\/categories?post=10120"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/myoceane.fr\/index.php\/wp-json\/wp\/v2\/tags?post=10120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}