{"id":2262,"date":"2019-11-22T11:26:07","date_gmt":"2019-11-22T10:26:07","guid":{"rendered":"https:\/\/myoceane.fr\/?p=2262"},"modified":"2020-05-13T10:01:49","modified_gmt":"2020-05-13T08:01:49","slug":"spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96","status":"publish","type":"post","link":"https:\/\/myoceane.fr\/index.php\/spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96\/","title":{"rendered":"[Spark] \u5e38\u898b\u554f\u984c\u8207\u8a0e\u8ad6"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n\n<p style=\"text-align: justify;\">\u672c\u7bc7\u60f3\u8981\u6301\u7e8c\u8a18\u9304\u5728\u57f7\u884c Spark, Hadoop \u958b\u767c\u7684\u6642\u5019\u6240\u9047\u5230\u7684\u6240\u6709\u554f\u984c\uff0c\u4e26\u63d0\u4f9b\u76f8\u5c0d\u61c9\u7684\u53c3\u8003\u8cc7\u6599\uff0c\u63d0\u4f9b\u4e00\u500b\u7b2c\u4e09\u65b9\u7684\u770b\u6cd5\u7576\u958b\u767c\u8005\u5728\u9047\u5230\u985e\u4f3c\u554f\u984c\u7684\u6642\u5019\u53ef\u4ee5\u6709\u9748\u611f\u53ef\u4ee5\u89e3\u6c7a\uff01<\/p>\n<h6>Performance Tuning<\/h6>\n<p><a href=\"https:\/\/spark.apache.org\/docs\/latest\/sql-performance-tuning.html\">https:\/\/spark.apache.org\/docs\/latest\/sql-performance-tuning.html<\/a><\/p>\n<pre class=\"lang:bash\">ERROR ApplicationMaster: User class threw exception: org.apache.spark.SparkException: Exception thrown in awaitResult:\norg.apache.spark.SparkException: Exception thrown in awaitResult:\n    at org.apache.spark.util.ThreadUtils@.awaitResult(ThreadUtils.scala:205)<\/pre>\n<p>\u6b64\u6642\u53ef\u4ee5\u5617\u8a66\u589e\u52a0 Timeout \u7684\u8a2d\u5b9a spark.sql.broadcastTimeout \u9810\u8a2d\u662f 300 \u79d2\uff01<\/p>\n\n\n\n<h6>Kerberos<\/h6>\n<p><a href=\"https:\/\/spark.apache.org\/docs\/latest\/running-on-yarn.html#kerberos\">https:\/\/spark.apache.org\/docs\/latest\/running-on-yarn.html#kerberos<\/a><\/p>\n<p>\u6709\u6642\u5019\u6703\u767c\u73fe\u4ee5\u4e0b\u7684 Access Security \u932f\u8aa4\uff1a<\/p>\n<pre class=\"lang:bash\">WARN TaskSetManager: Lost task 0.0 in stage 2.0 (TID 13, executor 1): org.apache.hadoop.security.AccessControlException: Authentication required\n    at org.apache.hadoop.hdfs.web.WebHdfsFileSystem.validateResponse(WebHdfsFileSystem.java:476)\n    at org.apache.hadoop.hdfs.web.WebHdfsFileSystem.access$200(WebHdfsFileSystem.java:119)<\/pre>\n<p>\u6b64\u6642\u5f88\u6709\u53ef\u80fd\u662f\u56e0\u70ba Kerberos \u7684\u8a8d\u8b49\u6c92\u6709\u8a2d\u5b9a\u597d\uff0c\u53ef\u4ee5\u5617\u8a66\u589e\u52a0 spark.yarn.access.hadoopFileSystems \u7684\u5177\u9ad4\u4f4d\u5740\u3002<\/p>\n\n\n\n<h6>SparkContext \u521d\u59cb\u5316<\/h6>\n<p>\u6709\u6642\u5019\u6211\u5011\u6703\u5f97\u5230\u4ee5\u4e0b\u7684\u932f\u8aa4\u8a0a\u606f\uff0c\u6b64\u6642\u662f\u7531\u65bc SparkSession \u521d\u59cb\u5316\u7684\u6642\u5019\u4f7f\u7528\u5230 setMaster(&#8220;local[*]&#8221;) \u4f46\u662f\u5728\u90e8\u7f72\u7684\u6642\u5019deploy-mode \u537b\u9078\u64c7 cluster \u4e0a\u9762\u3002&nbsp;<\/p>\n<pre class=\"lang:bash\">INFO ApplicationMaster:54 - Final app status: FAILED, exitCode: 13 \nERROR ApplicationMaster:91 - Uncaught exception: java.lang.IllegalStateException: User did not initialize spark context! \n    at org.apache.spark.deploy.yarn.ApplicationMaster.runDriver(ApplicationMaster.scala:498) \n    at org.apache.spark.deploy.yarn.ApplicationMaster.org$apache$spark$deploy$yarn$ApplicationMaster$$runImpl(ApplicationMaster.scala:345)<\/pre>\n\n\n\n<h5>Hive-site.xml \u932f\u8aa4\u63d0\u4f9b<\/h5>\n<p>\u5728\u9023\u7d50\u5230 Hive \u8cc7\u6599\u5eab\u7684\u6642\u5019\uff0c\u9700\u8981\u900f\u904e Metastore \u53bb\u505a\u9023\u7d50\uff0c\u4e00\u822c\u4f86\u8aaa Metastore \u7684\u8cc7\u8a0a\u662f\u653e\u5728 hive-site.xml\uff0c\u5982\u679c hive-site.xml \u88e1\u9762\u653e\u7684\u662f\u932f\u8aa4\u8cc7\u8a0a\u7684\u8a71\uff0c\u5c31\u6703\u7522\u751f\u985e\u4f3c\u4ee5\u4e0b\u7684\u932f\u8aa4\u8a0a\u606f\uff1a<\/p>\n<pre class=\"lang:bash\">java.lang.ClassNotFoundException: java.lang.NoClassDefFoundError: \norg\/apache\/hadoop\/hive\/ql\/session\/SessionState when creating Hive client \nusing classpath: file:\/home\/mountain\/hv\/lib\/, file:\/home\/mountain\/hp\/lib\/\nPlease make sure that jars for your version of hive and hadoop are \nincluded in the paths passed to spark.sql.hive.metastore.jars.<\/pre>\n\n\n\n<h5>\u540c\u6642\u8b80\u53d6\u591a\u500b Parquet <a href=\"https:\/\/blog.csdn.net\/dylanzr\/article\/details\/78834537\">\u53c3\u8003<\/a><\/h5>\n<p>\u6709\u6642\u5019\u6211\u5011\u6703\u9700\u8981\u5229\u7528 sparkSession.read.parquet() \u8b80\u53d6\u591a\u500b\u6a94\u6848\uff0c\u6211\u5011\u53ef\u4ee5\u5982\u4ee5\u4e0b\u6e05\u695a\u5b9a\u7fa9\u60f3\u8981\u8b80\u53d6\u7684\u6a94\u6848\u8def\u5f91\uff1a<\/p>\n<pre class=\"lang:java\">Dataset&lt;Row&gt; input = sparkSession.read.parquet(\"\/root\/path1\", \"\/root\/path2\")<\/pre>\n<p>\u4f46\u662f\u5982\u679c\u6211\u5011\u60f3\u8981\u8b80\u53d6\u591a\u500b\u8def\u5f91\u800c\u4e14\u60f3\u8981\u7528 * \u4f86\u4ee3\u66ff\u6240\u6709\u53ef\u80fd\u7684\u8def\u5f91\uff0c\u5982\u4ee5\u4e0b\u7bc4\u4f8b\uff1a<\/p>\n<pre class=\"lang:bash\">Dataset&lt;Row&gt; input = sparkSession.read.parquet(\"\/root\/date=*\/src=test\/\")<\/pre>\n<p>\u5247\u672a\u51fa\u73fe\u4ee5\u4e0b\u7684\u932f\u8aa4\u8a0a\u606f\uff1a<\/p>\n<pre class=\"lang:bash\">If provided paths are partition directories, please set \"basePath\" in the options of the data source to specify the root directory of the table. If there are multiple root directories, please load them separately and then union them.<\/pre>\n<p>\u6b64\u6642\u6211\u5011\u9700\u8981\u5728\u8b80\u53d6 parquet \u7684\u5730\u65b9\u52a0\u5165 Option basePath \u7684\u53c3\u6578\u8a2d\u5b9a\uff1a<\/p>\n<pre class=\"lang:bash\">Dataset&lt;Row&gt; input = sparkSession.read.option(\"basePath\",\"\/root\/\").parquet(\"\/root\/date=*\/src=test\/\")<\/pre>\n\n\n\n<h5>Spark \u53c3\u6578\u529f\u7528\uff1a<\/h5>\n<p>spark.sql.parquet.mergeSchema<\/p>\n<p>spark.sql.hive.convertMetastore.Parquet<\/p>\n\n\n\n<h6>\u5176\u4ed6\u6709\u7528\u7684\u7db2\u5740\u53c3\u8003\uff1a<\/h6>\n<p><a href=\"https:\/\/www.jianshu.com\/p\/0de92480b8b6\">https:\/\/www.jianshu.com\/p\/0de92480b8b6<\/a><\/p>\n<p><strong>\u95dc\u65bc MapReduce \u8207 Yarn \u7684\u80cc\u5f8c\u6a5f\u5236\uff1a<\/strong><\/p>\n<p><a href=\"https:\/\/www.ibm.com\/developerworks\/cn\/opensource\/os-cn-hadoop-yarn\/\">https:\/\/www.ibm.com\/developerworks\/cn\/opensource\/os-cn-hadoop-yarn\/<\/a><\/p>\n\n\n<h5>\u9023\u7dda\u4e0d\u5230 Spark WebUI<\/h5>\n<p>\u7b46\u8005\u5728\u00a0 linux\u00a0<\/p>\n<pre class=\"lang:bash\">Exception in thread \"main\" java.lang.ExceptionInInitializerError\n\tat org.apache.spark.SparkConf$.&lt;init&gt;(SparkConf.scala:668)\n\tat org.apache.spark.SparkConf$.&lt;clinit&gt;(SparkConf.scala)\n\tat org.apache.spark.SparkConf$$anonfun$getOption$1.apply(SparkConf.scala:375)\n\tat org.apache.spark.SparkConf$$anonfun$getOption$1.apply(SparkConf.scala:375)\n\tat scala.Option.orElse(Option.scala:289)\n\tat org.apache.spark.SparkConf.getOption(SparkConf.scala:375)\n\tat org.apache.spark.SparkConf.get(SparkConf.scala:250)\n\tat org.apache.spark.deploy.SparkHadoopUtil$.org$apache$spark$deploy$SparkHadoopUtil$$appendS3AndSparkHadoopConfigurations(SparkHadoopUtil.scala:473)\n\tat org.apache.spark.deploy.SparkHadoopUtil$.newConfiguration(SparkHadoopUtil.scala:446)\n\tat org.apache.spark.deploy.SparkSubmit$$anonfun$1.apply(SparkSubmit.scala:383)\n\tat org.apache.spark.deploy.SparkSubmit$$anonfun$1.apply(SparkSubmit.scala:383)\n\tat scala.Option.getOrElse(Option.scala:121)\n\tat org.apache.spark.deploy.SparkSubmit$.doPrepareSubmitEnvironment(SparkSubmit.scala:383)\n\tat org.apache.spark.deploy.SparkSubmit$.prepareSubmitEnvironment(SparkSubmit.scala:250)\n\tat org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:171)\n\tat org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:137)\n\tat org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)\nCaused by: java.net.SocketException: Bad address (ioctl(SIOCGIFCONF) failed)\n\tat java.net.NetworkInterface.getAll(Native Method)\n\tat java.net.NetworkInterface.getNetworkInterfaces(NetworkInterface.java:355)\n\tat org.apache.spark.util.Utils$.findLocalInetAddress(Utils.scala:922)\n\tat org.apache.spark.util.Utils$.org$apache$spark$util$Utils$$localIpAddress$lzycompute(Utils.scala:908)\n\tat org.apache.spark.util.Utils$.org$apache$spark$util$Utils$$localIpAddress(Utils.scala:908)\n\tat org.apache.spark.util.Utils$$anonfun$localCanonicalHostName$1.apply(Utils.scala:965)\n\tat org.apache.spark.util.Utils$$anonfun$localCanonicalHostName$1.apply(Utils.scala:965)\n\tat scala.Option.getOrElse(Option.scala:121)\n\tat org.apache.spark.util.Utils$.localCanonicalHostName(Utils.scala:965)\n\tat org.apache.spark.internal.config.package$.&lt;init&gt;(package.scala:282)\n\tat org.apache.spark.internal.config.package$.&lt;clinit&gt;(package.scala)\n\t... 17 more<\/pre>\n<p>\u5728 Init Spark \u7684\u6642\u5019 Python \u767c\u51fa\u7684\u932f\u8aa4\u8a0a\u606f\uff1a<\/p>\n<pre class=\"lang:python\">Traceback (most recent call last):\n  File \"LanguageAutoInsertionSingle.py\", line 19, in &lt;module&gt;\n    sc = SparkContext(\"local\", arguments[\"format\"]+\"-load-app\")\n  File \"\/usr\/local\/lib\/python3.6\/site-packages\/pyspark\/context.py\", line 133, in __init__\n    SparkContext._ensure_initialized(self, gateway=gateway, conf=conf)\n  File \"\/usr\/local\/lib\/python3.6\/site-packages\/pyspark\/context.py\", line 316, in _ensure_initialized\n    SparkContext._gateway = gateway or launch_gateway(conf)\n  File \"\/usr\/local\/lib\/python3.6\/site-packages\/pyspark\/java_gateway.py\", line 46, in launch_gateway\n    return _launch_gateway(conf)\n  File \"\/usr\/local\/lib\/python3.6\/site-packages\/pyspark\/java_gateway.py\", line 108, in _launch_gateway\n    raise Exception(\"Java gateway process exited before sending its port number\")\nException: Java gateway process exited before sending its port number<\/pre>\n<p>\u00a0<\/p>\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u672c\u7bc7\u60f3\u8981\u6301\u7e8c\u8a18\u9304\u5728\u57f7\u884c Spark, Hadoop \u958b\u767c\u7684\u6642\u5019\u6240\u9047\u5230\u7684\u6240\u6709\u554f\u984c\uff0c\u4e26\u63d0\u4f9b\u76f8\u5c0d\u61c9\u7684\u53c3\u8003\u8cc7\u6599\uff0c\u63d0\u4f9b\u4e00\u500b\u7b2c\u4e09\u65b9\u7684\u770b\u6cd5\u7576\u958b\u767c\u8005\u5728\u9047\u5230\u985e\u4f3c\u554f\u984c\u7684\u6642\u5019\u53ef\u4ee5\u6709\u9748\u611f\u53ef\u4ee5\u89e3\u6c7a\uff01<\/p>\n","protected":false},"author":1,"featured_media":2323,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-2262","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bigdata-ml"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Spark] \u5e38\u898b\u554f\u984c\u8207\u8a0e\u8ad6 - \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\/spark-\u5e38\u898b\u554f\u984c\u8207\u8a0e\u8ad6\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Spark] \u5e38\u898b\u554f\u984c\u8207\u8a0e\u8ad6 - \u60f3\u65b9\u6d89\u6cd5 - \u91cf\u74f6\u5916\u7684\u5929\u7a7a M-Y-Oceane\" \/>\n<meta property=\"og:description\" content=\"\u672c\u7bc7\u60f3\u8981\u6301\u7e8c\u8a18\u9304\u5728\u57f7\u884c Spark, Hadoop \u958b\u767c\u7684\u6642\u5019\u6240\u9047\u5230\u7684\u6240\u6709\u554f\u984c\uff0c\u4e26\u63d0\u4f9b\u76f8\u5c0d\u61c9\u7684\u53c3\u8003\u8cc7\u6599\uff0c\u63d0\u4f9b\u4e00\u500b\u7b2c\u4e09\u65b9\u7684\u770b\u6cd5\u7576\u958b\u767c\u8005\u5728\u9047\u5230\u985e\u4f3c\u554f\u984c\u7684\u6642\u5019\u53ef\u4ee5\u6709\u9748\u611f\u53ef\u4ee5\u89e3\u6c7a\uff01\" \/>\n<meta property=\"og:url\" content=\"https:\/\/myoceane.fr\/index.php\/spark-\u5e38\u898b\u554f\u984c\u8207\u8a0e\u8ad6\/\" \/>\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=\"2019-11-22T10:26:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-05-13T08:01:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/myoceane.fr\/wp-content\/uploads\/2019\/11\/0_Fqbq1NshhfG_Iuup.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"965\" \/>\n\t<meta property=\"og:image:height\" content=\"391\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\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=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/myoceane.fr\/index.php\/spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/myoceane.fr\/index.php\/spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96\/\"},\"author\":{\"name\":\"\u6ab8\u6aac\u7238\",\"@id\":\"https:\/\/myoceane.fr\/#\/schema\/person\/4a4552fb8c27693083d465e12db7658b\"},\"headline\":\"[Spark] \u5e38\u898b\u554f\u984c\u8207\u8a0e\u8ad6\",\"datePublished\":\"2019-11-22T10:26:07+00:00\",\"dateModified\":\"2020-05-13T08:01:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/myoceane.fr\/index.php\/spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96\/\"},\"wordCount\":91,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/myoceane.fr\/#\/schema\/person\/4a4552fb8c27693083d465e12db7658b\"},\"image\":{\"@id\":\"https:\/\/myoceane.fr\/index.php\/spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/myoceane.fr\/wp-content\/uploads\/2019\/11\/0_Fqbq1NshhfG_Iuup.jpg\",\"articleSection\":[\"Big Data &amp; Machine Learning\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/myoceane.fr\/index.php\/spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/myoceane.fr\/index.php\/spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96\/\",\"url\":\"https:\/\/myoceane.fr\/index.php\/spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96\/\",\"name\":\"[Spark] \u5e38\u898b\u554f\u984c\u8207\u8a0e\u8ad6 - \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\/spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/myoceane.fr\/index.php\/spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/myoceane.fr\/wp-content\/uploads\/2019\/11\/0_Fqbq1NshhfG_Iuup.jpg\",\"datePublished\":\"2019-11-22T10:26:07+00:00\",\"dateModified\":\"2020-05-13T08:01:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/myoceane.fr\/index.php\/spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/myoceane.fr\/index.php\/spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/myoceane.fr\/index.php\/spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96\/#primaryimage\",\"url\":\"https:\/\/myoceane.fr\/wp-content\/uploads\/2019\/11\/0_Fqbq1NshhfG_Iuup.jpg\",\"contentUrl\":\"https:\/\/myoceane.fr\/wp-content\/uploads\/2019\/11\/0_Fqbq1NshhfG_Iuup.jpg\",\"width\":965,\"height\":391},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/myoceane.fr\/index.php\/spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/myoceane.fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Spark] \u5e38\u898b\u554f\u984c\u8207\u8a0e\u8ad6\"}]},{\"@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":"[Spark] \u5e38\u898b\u554f\u984c\u8207\u8a0e\u8ad6 - \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\/spark-\u5e38\u898b\u554f\u984c\u8207\u8a0e\u8ad6\/","og_locale":"en_US","og_type":"article","og_title":"[Spark] \u5e38\u898b\u554f\u984c\u8207\u8a0e\u8ad6 - \u60f3\u65b9\u6d89\u6cd5 - \u91cf\u74f6\u5916\u7684\u5929\u7a7a M-Y-Oceane","og_description":"\u672c\u7bc7\u60f3\u8981\u6301\u7e8c\u8a18\u9304\u5728\u57f7\u884c Spark, Hadoop \u958b\u767c\u7684\u6642\u5019\u6240\u9047\u5230\u7684\u6240\u6709\u554f\u984c\uff0c\u4e26\u63d0\u4f9b\u76f8\u5c0d\u61c9\u7684\u53c3\u8003\u8cc7\u6599\uff0c\u63d0\u4f9b\u4e00\u500b\u7b2c\u4e09\u65b9\u7684\u770b\u6cd5\u7576\u958b\u767c\u8005\u5728\u9047\u5230\u985e\u4f3c\u554f\u984c\u7684\u6642\u5019\u53ef\u4ee5\u6709\u9748\u611f\u53ef\u4ee5\u89e3\u6c7a\uff01","og_url":"https:\/\/myoceane.fr\/index.php\/spark-\u5e38\u898b\u554f\u984c\u8207\u8a0e\u8ad6\/","og_site_name":"\u60f3\u65b9\u6d89\u6cd5 - \u91cf\u74f6\u5916\u7684\u5929\u7a7a M-Y-Oceane","article_published_time":"2019-11-22T10:26:07+00:00","article_modified_time":"2020-05-13T08:01:49+00:00","og_image":[{"width":965,"height":391,"url":"https:\/\/myoceane.fr\/wp-content\/uploads\/2019\/11\/0_Fqbq1NshhfG_Iuup.jpg","type":"image\/jpeg"}],"author":"\u6ab8\u6aac\u7238","twitter_card":"summary_large_image","twitter_misc":{"Written by":"\u6ab8\u6aac\u7238","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/myoceane.fr\/index.php\/spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96\/#article","isPartOf":{"@id":"https:\/\/myoceane.fr\/index.php\/spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96\/"},"author":{"name":"\u6ab8\u6aac\u7238","@id":"https:\/\/myoceane.fr\/#\/schema\/person\/4a4552fb8c27693083d465e12db7658b"},"headline":"[Spark] \u5e38\u898b\u554f\u984c\u8207\u8a0e\u8ad6","datePublished":"2019-11-22T10:26:07+00:00","dateModified":"2020-05-13T08:01:49+00:00","mainEntityOfPage":{"@id":"https:\/\/myoceane.fr\/index.php\/spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96\/"},"wordCount":91,"commentCount":1,"publisher":{"@id":"https:\/\/myoceane.fr\/#\/schema\/person\/4a4552fb8c27693083d465e12db7658b"},"image":{"@id":"https:\/\/myoceane.fr\/index.php\/spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96\/#primaryimage"},"thumbnailUrl":"https:\/\/myoceane.fr\/wp-content\/uploads\/2019\/11\/0_Fqbq1NshhfG_Iuup.jpg","articleSection":["Big Data &amp; Machine Learning"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/myoceane.fr\/index.php\/spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/myoceane.fr\/index.php\/spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96\/","url":"https:\/\/myoceane.fr\/index.php\/spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96\/","name":"[Spark] \u5e38\u898b\u554f\u984c\u8207\u8a0e\u8ad6 - \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\/spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96\/#primaryimage"},"image":{"@id":"https:\/\/myoceane.fr\/index.php\/spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96\/#primaryimage"},"thumbnailUrl":"https:\/\/myoceane.fr\/wp-content\/uploads\/2019\/11\/0_Fqbq1NshhfG_Iuup.jpg","datePublished":"2019-11-22T10:26:07+00:00","dateModified":"2020-05-13T08:01:49+00:00","breadcrumb":{"@id":"https:\/\/myoceane.fr\/index.php\/spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/myoceane.fr\/index.php\/spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/myoceane.fr\/index.php\/spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96\/#primaryimage","url":"https:\/\/myoceane.fr\/wp-content\/uploads\/2019\/11\/0_Fqbq1NshhfG_Iuup.jpg","contentUrl":"https:\/\/myoceane.fr\/wp-content\/uploads\/2019\/11\/0_Fqbq1NshhfG_Iuup.jpg","width":965,"height":391},{"@type":"BreadcrumbList","@id":"https:\/\/myoceane.fr\/index.php\/spark-%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c%e8%88%87%e8%a8%8e%e8%ab%96\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/myoceane.fr\/"},{"@type":"ListItem","position":2,"name":"[Spark] \u5e38\u898b\u554f\u984c\u8207\u8a0e\u8ad6"}]},{"@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\/2262","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=2262"}],"version-history":[{"count":40,"href":"https:\/\/myoceane.fr\/index.php\/wp-json\/wp\/v2\/posts\/2262\/revisions"}],"predecessor-version":[{"id":4447,"href":"https:\/\/myoceane.fr\/index.php\/wp-json\/wp\/v2\/posts\/2262\/revisions\/4447"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/myoceane.fr\/index.php\/wp-json\/wp\/v2\/media\/2323"}],"wp:attachment":[{"href":"https:\/\/myoceane.fr\/index.php\/wp-json\/wp\/v2\/media?parent=2262"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/myoceane.fr\/index.php\/wp-json\/wp\/v2\/categories?post=2262"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/myoceane.fr\/index.php\/wp-json\/wp\/v2\/tags?post=2262"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}