{"resolved":true,"match_type":"uuid","source_type":"original_book","book_id":"cd4f7678-cd9b-4971-bde0-e9ad46a6cc71","title":"人工智能与大数据技术导论","author":null,"edition":null,"publisher":null,"year":null,"isbn":"9787302517986","requested_by":"printed_page","book":{"source_type":"original_book","book_id":"cd4f7678-cd9b-4971-bde0-e9ad46a6cc71","id":"cd4f7678-cd9b-4971-bde0-e9ad46a6cc71","uuid":"cd4f7678-cd9b-4971-bde0-e9ad46a6cc71","title":"人工智能与大数据技术导论","normalized_title":"人工智能与大数据技术导论","author":null,"edition":null,"publisher":null,"year":null,"isbn":"9787302517986","isbns":["9787302517986"],"parsed":true,"ai_readable":true,"document_type":"book","page_count":490,"navigation_url":"https://workshop.closeclaw.top/ai/book/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71","title_url":"https://workshop.closeclaw.top/ai/title/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E4%B8%8E%E5%A4%A7%E6%95%B0%E6%8D%AE%E6%8A%80%E6%9C%AF%E5%AF%BC%E8%AE%BA","fixed_page_url_template":"https://workshop.closeclaw.top/ai/book/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71/page/{printed_page}","path_api_url_template":"https://workshop.closeclaw.top/api/ai/book/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71/page/{printed_page}","read_url":"https://workshop.closeclaw.top/api/ai/read/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71","page_url":"https://workshop.closeclaw.top/api/ai/books/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71/page","search_url":"https://workshop.closeclaw.top/api/ai/books/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71/search"},"page":{"printed_page":81,"pdf_page":97,"physical_index":97,"physical_index_base":0,"printed_page_status":"recognized","page_sha256":"8bc460bcbfec2f02f6ab04150e559a9d2278aa4a7530d06017321d61ba33a9be"},"chapter":"第3章","content":"Hadoop使用数据复制来实现容错性（I/O高），而Spark使用RDD（ResilientDistributedDatasets，弹性分布式数据集）数据存储模型来实现数据的容错性。RDD是只读的、分区记录的集合。如果一个RDD的一个分区丢失，RDD含有如何重建这个分区的相关信息。这就避免了使用数据复制来保证容错性的要求，从而减少了对磁盘的访问。通过RDD，后续步骤如果需要相同数据集，就不必重新计算或从磁盘加载，这个特性使得Spark非常适合流水线式的数据处理。\n\n虽然 Spark 可以独立于Hadoop运行，但是Spark 还是需要一个集群管理器和一个分布式存储系统。对于集群管理，Spark 支持 Hadoop YARN、ApacheMesos和 Spark原生集群。对于分布式存储，Spark 可以使用 HDFS、Cassandra、OpenStack Swift 和 Amazon S3。Spark 支持 Java、Python 和 Scala（Scala是 Spark 最推荐的编程语言，Spark 和 Scala 能够紧密集成，Scala程序可以在Spark控制台上执行）。应该说，Spark紧密集成Hadoop生态系统中的上述工具。Spark可以与Hadoop上的常用数据格式（如Avro和Parquet）进行交互，能读写HBase等NoSQL数据库，它的流处理组件 Spark Streaming能连续从Flume和Kafka之类的系统上读取数据，它的 SQL 库 Spark SQL 能和 Hive Metastore 交互。\n\nSpark可用来构建大型的、低延迟的数据分析应用程序。如图3-10所示，Spark包含的库有：Spark SQL、Spark Streaming、MLlib（用于机器学习）和GraphX。其中，Spark SQL和Spark Streaming最受欢迎，大概60%的用户在使用这两个库中的一个。而且Spark 还能替代MapReduce成为Hive的底层执行引擎。\n\nSpark的内存缓存使它适合进行迭代计算。机器学习算法需要多次遍历训练集，可以将训练集缓存在内存里。在对数据集进行探索时，数据科学家可以在运行查询的时候将数据集放在内存中，这样就节省了访问磁盘的开销。\n\n虽然Spark目前被广泛认为是下一代Hadoop，但是Spark本身的复杂性也困扰着开发人员。Spark的批处理能力仍然比不过MapReduce，与Spark SQL和Hive的 SQL 功能相比还有一定的差距，Spark的统计功能与R语言相比还没有可比性。\n\n第3章 数据\n\n81","previous_page":80,"next_page":82}