Spark SQL大数据实例开发教程

Spark SQL大数据实例开发教程 pdf epub mobi txt 电子书 下载 2025

王家林 著
图书标签:
  • Spark SQL
  • 大数据
  • 数据分析
  • 实例开发
  • 教程
  • 数据处理
  • SQL
  • 大数据技术
  • 数据仓库
  • ETL
想要找书就要到 静思书屋
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 机械工业出版社
ISBN:9787111591979
版次:1
商品编码:12339866
品牌:机工出版
包装:平装
丛书名: 大数据科学丛书
开本:16开
出版时间:2018-04-01
用纸:胶版纸
页数:254

具体描述

内容简介

Spark SQL是Spark生态环境中核心和基础的组件,是掌握Spark的关键所在。本书完全从企业级开发的角度出发,结合多个企业级应用案例,深入剖析Spark SQL。全书共分为8章,包括:认识Spark SQL、DataFrame原理与常用操作、Spark SQL操作多种数据源、Parquet列式存储、Spark SQL内置函数与窗口函数、Spark SQL UDF与UDAF、Thrift Server、Spark SQL综合应用案例。
本书可以使读者对Spark SQL有深入彻底的理解,本书适合于Spark学习爱好者,是学习Spark SQL的入门和提高教材,也是Spark开发工程师开发过程中查阅Spark SQL的案头手册。

目录



前言
第1章认识Spark SQL
1.1Spark SQL概述
1.1.1Spark SQL与DataFrame
1.1.2DataFrame与RDD的差异
1.1.3Spark SQL的发展历程
1.2从零起步掌握Hive
1.2.1Hive的本质是什么
1.2.2Hive安装和配置
1.2.3使用Hive分析搜索数据
1.3Spark SQL on Hive安装与配置
1.3.1安装Spark SQL
1.3.2安装MySQL
1.3.3启动Hive Metastore
1.4Spark SQL初试
1.4.1通过spark-shell来使用Spark SQL
1.4.2Spark SQL的命令终端
1.4.3Spark的Web UI
1.5本章小结
第2章DataFrame原理与常用操作
2.1DataFrame编程模型
2.2DataFrame基本操作实战
2.2.1数据准备
2.2.2启动交互式界面
2.2.3数据处理与分析
2.3通过RDD来构建DataFrame
2.4缓存表(列式存储)
2.5DataFrame API应用示例
2.6本章小结
第3章Spark SQL 操作多种数据源
3.1通用的加载/保存功能
3.1.1Spark SQL加载数据
3.1.2Spark SQL保存数据
3.1.3综合案例——电商热销商品排名
3.2Spark SQL操作Hive示例
3.3Spark SQL操作JSON数据集示例
3.4Spark SQL操作HBase示例
3.5Spark SQL操作MySQL示例
3.5.1安装并启动MySQL
3.5.2准备数据表
3.5.3操作MySQL表
3.6Spark SQL操作MongoDB示例
3.6.1安装配置MongoDB
3.6.2启动MongoDB
3.6.3准备数据
3.6.4Spark SQL操作MongoDB
3.7本章小结
第4章Parquet列式存储
4.1Parquet概述
4.1.1Parquet的基本概念
4.1.2Parquet数据列式存储格式应用举例
4.2Parquet的Block配置及数据分片
4.2.1Parquet的Block的配置
4.2.2Parquet 内部的数据分片
4.3Parquet序列化
4.3.1Spark实施序列化的目的
4.3.2Parquet两种序列化方式
4.4本章小结
第5章Spark SQL内置函数与窗口函数
5.1Spark SQL内置函数
5.1.1Spark SQL内置函数概述
5.1.2Spark SQL内置函数应用实例
5.2Spark SQL窗口函数
5.2.1Spark SQL窗口函数概述
5.2.2Spark SQL窗口函数分数查询统计案例
5.2.3Spark SQL窗口函数NBA常规赛数据统计案例
5.3本章小结
第6章Spark SQL UDF与UDAF
6.1UDF概述
6.2UDF示例
6.2.1Hobby_count函数
6.2.2Combine函数
6.2.3Str2Int函数
6.2.4Wsternstate函数
6.2.5ManyCustomers函数
6.2.6StateRegion函数
6.2.7DiscountRatio函数
6.2.8MakeStruct函数
6.2.9MyDateFilter函数
6.2.10MakeDT函数
6.3UDAF概述
6.4UDAF示例
6.4.1ScalaAggregateFunction函数
6.4.2GeometricMean函数
6.4.3CustomMean函数
6.4.4BelowThreshold函数
6.4.5YearCompare函数
6.4.6WordCount函数
6.5本章小结
第7章Thrift Server
7.1Thrift概述
7.1.1Thrift的基本概念
7.1.2Thrift的工作机制
7.1.3Thrift的运行机制
7.1.4一个简单的Thrift 实例
7.2Thrift Server的启动过程
7.2.1Thrift Sever启动详解
7.2.2HiveThriftServer2类的解析
7.3Beeline操作
7.3.1Beeline连接方式
7.3.2在Beeline中进行SQL查询操作
7.3.3通过Web控制台查看用户进行的操作
7.4Thrift Server应用示例
7.4.1示例源代码
7.4.2关键代码行解析
7.4.3测试运行
7.4.4运行结果解析
7.4.5Spark Web控制台查看运行日志
7.5本章小结
第8章Spark SQL综合应用案例
8.1综合案例实战——电商网站日志多维度数据分析
8.1.1数据准备
8.1.2数据说明
8.1.3数据创建
8.1.4数据导入
8.1.5数据测试和处理
8.2综合案例实战——电商网站搜索排名统计
8.2.1案例概述
8.2.2数据准备
8.2.3实现用户每天搜索前3名的商品排名统计
8.3本章小结

前言/序言

“Use of MapReduce engine for Big Data projects will decline, replaced by Apache Spark�薄�
MapReduce计算模型的使用会越来越少,最终将被Apache Spark所取代。
——Hadoop之父Doug Cutting写作背景Spark是一个快速大规模数据处理的通用引擎。它给Java、Scala、Python和R等语言提供了高级API,并基于统一抽象的RDD(弹性分布式数据集),逐渐形成了一套自己的生态系统。这个生态系统主要包括负责SQL和结构化数据处理的Spark SQL、负责实时流处理的Spark Streaming、负责图计算的Spark GraphX以及机器学习子框架Mlib。Spark在处理各种场景时,提供给用户统一的编程体验,可极大地提高编程效率。
Hive是运行在Hadoop上的SQL on Hadoop工具,它的推出是为了给熟悉RDBMS但又不理解MapReduce的技术人员提供快速上手的工具,但是MapReduce在计算过程中消耗大量I/O资源,降低了运行效率。为了提高SQL on Hadoop的效率,Shark出现了,它使得SQL on Hadoop的性能比Hive有了10~100倍的提高。但Shark对于Hive的过度依赖(如采用Hive的语法解析器、查询优化器等),制约了Spark的发展,所以提出了Spark SQL项目,Spark SQL抛弃Shark原有的弊端,又汲取了Shark的一些优点,如内存列存储(In-Memory Columnar Storage)、Hive的兼容性等,由于摆脱了对Hive的依赖性,Spark SQL在数据兼容、性能优化、组件扩展等方面的性能都得到了极大的提升。
Spark SQL是Spark生态环境中最核心和最基础的组件,是掌握Spark的关键所在。由于目前市场上介绍Spark技术的书籍比较少,尤其是单独讲解Spark SQL的书更是凤毛麟角,我们特意编写了这本理论和实战相结合的Spark SQL书籍,在介绍Spark SQL核心技术的同时又配备了丰富的示例,同时还穿插了源代码的分析,使读者能从更深层次来把握Spark SQL的核心技术。
内容速览本书完全从企业级开发的角度出发,结合多个企业级应用案例,深入剖析Spark SQL。
全书一共分为8章,主要内容概括如下:
第1章认识Spark SQL,引领读者了解Spark SQL的基础知识,接下来的第2章至第7章,结合实战案例,引导读者掌握Spark SQL的核心知识,这6章内容分别为:DataFrame原理与常用操作、Spark SQL操作多种数据源、Parquet列式存储、Spark SQL内置函数与窗口函数、Spark SQL UDF与UDAF、Thrift Server;本书的最后部分,第8章Spark SQL综合应用案例归纳并综合运用了全部Spark SQL知识点,是深入理解Spark SQL的经典案例。
本书可以使读者对Spark SQL有深入的理解,是Spark爱好者用来学习Spark SQL的理想教程,也是Spark开发工程师在开发过程中可随时查阅的案头手册。
本书作者本书由王家林和段智华编写。
预备知识在学习本书之前读者需要熟悉基本的Linux命令及Java、Scala语言,掌握基本的Spark知识架构,能够搭建Spark集群环境。
致谢在本书编写的过程中,作者参考了很多网络上的书籍和博客,在此谢谢各位作者,正是你们的无私奉献,才推动了Spark技术的快速发展。
特别感谢“小小”同学为本书的编写提供的各种协调和热心帮助。
由于笔者能力有限,书中难免存在错误或表达不准确的内容,恳请大家批评指正,希望大家一起努力使Spark技术在大数据计算领域里推广开来。
作者2017.9
《大数据实战:Spark SQL性能调优与应用开发》 一、图书简介 本书旨在为广大大数据开发工程师、数据分析师以及对Spark SQL技术感兴趣的技术爱好者提供一本深入、实用的技术指南。我们深知,在实际大数据项目中,仅仅掌握Spark SQL的基本语法和使用方法是远远不够的。真正能够驾驭大规模数据集、解决复杂业务问题、并实现高性能数据处理的,是那些懂得如何优化Spark SQL查询、如何设计高效的数据处理流程、以及如何将Spark SQL与其他大数据组件无缝集成的高级开发者。 因此,本书将重点聚焦于Spark SQL的性能调优、高级应用开发技巧以及在真实世界中的部署与实践。我们不会停留在“如何写SQL”的层面,而是带领读者深入了解Spark SQL的底层运行机制,剖析其查询优化器的工作原理,并基于此讲解一系列行之有效的调优策略。同时,本书还将涵盖如何利用Spark SQL解决复杂的分析场景,如流式数据处理、图计算、机器学习数据预处理等,并探讨其在实际项目中的落地方法。 本书的内容组织紧凑,层层递进,从理论到实践,从基础到高级,力求为读者构建一个扎实而全面的Spark SQL技术知识体系。我们坚信,通过对本书的学习,读者将能够显著提升在大数据开发领域的实战能力,能够独立承担更具挑战性的项目,并成为一名真正的大数据技术专家。 二、内容大纲与特色 第一部分:Spark SQL性能调优的基石——深入理解其工作原理 1.1 Spark SQL架构概览与核心组件 Spark Core与Spark SQL的关系 DataFrame/Dataset API的演进与优势 Catalyst Optimizer:查询解析、逻辑优化、物理优化 Tungsten Execution Engine:内存管理、代码生成 特色: 本章并非简单罗列组件,而是从“为什么Spark SQL如此高效”的角度出发,深入剖析Catalyst和Tungsten如何协同工作,为后续的性能调优打下坚实的基础。我们将通过图示和代码片段,清晰地展示查询从SQL语句到最终执行计划的转化过程。 1.2 Catalyst Optimizer深度解析 解析(Parsing): SQL语句的抽象语法树(AST)生成 逻辑优化(Logical Optimization): 规则驱动的逻辑计划转换(如Predicate Pushdown, Column Pruning, Constant Folding等) 物理优化(Physical Optimization): 成本模型、Join Reordering、Shuffle Pruning、Exchange Elimination 执行计划(Execution Plan): DAG的生成与执行 特色: 本章将“看懂Spark UI中的执行计划”作为核心目标。我们会详细解析各种优化规则的原理,并结合具体SQL语句,演示优化器如何进行转换,让读者理解为什么某些SQL写法会产生更优的执行计划。 1.3 Tungsten Execution Engine:内存管理与代码生成 内存管理:堆内/堆外内存、Off-Heap Memory 编码格式:Internal Unsafe Row Format、Columnar Format 代码生成(Whole-Stage Code Generation):减少JVM开销,提升计算效率 特色: 我们将重点阐述代码生成如何“将Spark SQL的执行过程从Java/Scala对象操作转化为高效的CPU指令”。通过对比有无代码生成执行的效率差异,直观展现其威力。 第二部分:Spark SQL性能调优的实战策略 2.1 数据存储格式与分区策略优化 Parquet、ORC等列式存储格式的优势 数据分区(Partitioning): 目录结构、动态分区、分区裁剪(Partition Pruning) 数据倾斜(Data Skew)的识别与规避: Salting、Broadcast Join、Map-side Join 特色: 本章将“从数据源头优化性能”。我们会深入讲解为什么列式存储更适合OLAP场景,如何通过合理的分区策略避免全表扫描,以及如何识别和处理普遍存在的数据倾斜问题,提供多种实用的解决方案。 2.2 JOIN操作的性能调优 Shuffle Hash Join、Sort Merge Join、Broadcast Hash Join、Broadcast Nested Loop Join Join Reordering与Join Selection 小表与大表Join的优化: Broadcast Join的适用场景与阈值设置 SMB Join与Skew Join的处理: 特色: JOIN是Spark SQL中最常见的性能瓶颈之一。本章将“拆解各种Join的执行过程”,并结合实际案例,指导读者根据数据规模和分布选择最合适的Join策略,避免不必要的Shuffle。 2.3 Shuffle操作的精细化管理 Shuffle的原理与开销 Shuffle Read/Write优化: Reduce 数量的合理配置、Combine/Aggregation Pushdown 数据倾斜与Shuffle: 深入分析Shuffle过程中可能产生的数据倾斜 特色: Shuffle是Spark中昂贵的操作。本章将“揭示Shuffle背后的网络IO和磁盘IO”,并教授如何通过调整配置参数、优化SQL逻辑来最小化Shuffle的数据量和网络传输,从而显著提升作业吞吐量。 2.4 内存管理与缓存策略 DataFrame/Dataset的Caching与Persisting 内存溢出(OOM)的分析与解决 Spark配置参数调优:`spark.executor.memory`、`spark.driver.memory`、`spark.memory.fraction`等 特色: 本章将“从内存的角度审视Spark SQL的运行”。我们会讲解`persist()`与`cache()`的区别,何时应该使用它们,以及如何通过调整JVM和Spark的内存参数来避免内存相关的错误,并优化内存使用效率。 2.5 UDF(用户定义函数)的性能考量 Scala UDF vs Python UDF vs Spark SQL Built-in Function Pandas UDF (Vectorized UDF) 的性能优势 特色: 本章将“深入探讨UDF对Spark SQL性能的影响”。我们将分析不同类型UDF的性能差异,并强调Pandas UDF在处理大规模数据时带来的巨大性能提升,指导读者何时以及如何使用它们。 第三部分:Spark SQL高级应用开发与集成 3.1 流式数据处理与Spark Structured Streaming Structured Streaming的核心概念:Source、Sink、Trigger、Watermarking Spark SQL在流式计算中的应用: 流式Join、流式聚合、窗口操作 端到端Exactly-Once语义的实现 特色: 本章将“将Spark SQL的能力延伸到实时数据场景”。我们将通过实际案例,演示如何利用Spark SQL进行实时的ETL、实时报表生成以及实时告警,并重点讲解如何处理迟到数据和保证数据一致性。 3.2 Spark SQL与机器学习的融合 MLlib的DataFrame/Dataset API Spark SQL用于特征工程: 数据清洗、特征提取、特征转换 ML Pipelines与Spark SQL的集成 特色: 本章将“揭示Spark SQL在机器学习生命周期中的关键作用”。我们将展示如何使用Spark SQL对海量数据进行高效的预处理,为机器学习模型的训练奠定坚实基础,并介绍如何将Spark SQL的查询结果直接作为MLlib的输入。 3.3 Spark SQL与其他大数据组件的集成 与HDFS、Hive、HBase、Kafka、Cassandra等组件的集成 Spark SQL on Kubernetes/YARN 集群部署与管理 特色: 本章将“构建一个完整的大数据生态系统”。我们将演示Spark SQL如何无缝地读取和写入各种数据源,以及如何在生产环境中进行弹性伸缩和高效部署。 3.4 生产环境下的Spark SQL应用实践 性能监控与诊断工具: Spark UI、Metrics、Logging 自动化测试与CI/CD 案例研究: 真实企业级Spark SQL项目开发经验分享 特色: 本章将“从理论走向实战,解决生产中的挑战”。我们将分享大量一线开发经验,包括如何快速定位问题、如何进行代码审查、以及如何在复杂多变的生产环境中保证Spark SQL应用的稳定性和高性能。 四、本书特色总结 1. 深度与广度的平衡: 既深入剖析Spark SQL的底层原理,又不乏详实的实战技巧和案例,理论与实践紧密结合。 2. 以性能优化为核心: 将性能调优贯穿全书,从数据存储到查询执行,全方位指导读者提升Spark SQL的运行效率。 3. 实战导向: 聚焦于解决实际大数据开发中遇到的问题,提供可落地、可复用的解决方案。 4. 技术前沿: 涵盖Spark Structured Streaming、Pandas UDF等最新技术,帮助读者掌握行业前沿知识。 5. 清晰的逻辑结构: 内容组织严谨,循序渐进,易于读者理解和掌握。 通过本书的学习,您将不再仅仅是一个Spark SQL的使用者,而将成为一个能够深入理解其工作原理、精通其性能调优、并能将其灵活应用于复杂业务场景的Spark SQL高级开发者。

用户评价

评分

作为一名对技术更新换代速度感到焦虑的IT从业者,我对《Spark SQL大数据实例开发教程》这本书寄予厚望。我了解Spark SQL是Apache Spark的核心组件之一,在大数据领域扮演着越来越重要的角色。我希望这本书能够帮助我快速掌握Spark SQL的核心概念和实际应用技巧,从而提升我的职业竞争力。我特别关注书中提供的实例是否具有代表性,能否涵盖当前大数据开发中的一些热门方向。比如,书中是否会演示如何利用Spark SQL进行ETL(Extract, Transform, Load)操作,如何构建数据仓库和数据湖,以及如何进行ad-hoc(临时性的)查询和分析。我更希望看到书中能够提供一些关于Spark SQL的SQL函数库的详细介绍,以及如何利用这些函数来处理日期、字符串、数组等复杂数据类型。此外,对于性能的考量,书中是否会提供一些关于Spark SQL执行计划的分析和优化方法,以及如何利用DataFrame API和Spark SQL结合使用来提升开发效率。如果书中还能提供一些关于Spark SQL与BI工具(如Tableau、Power BI)的集成案例,那就更好了,这样可以帮助我更好地将分析结果可视化,并反馈给业务部门。我希望这本书能够成为我快速掌握Spark SQL并将其应用于实际工作的“敲门砖”。

评分

这本书的封面设计相当吸引人,深邃的蓝色背景搭配醒目的橙色书名,立刻就传达出一种技术硬核且实用的感觉。拿到手里,纸张的质感也很不错,印刷清晰,排版也很舒服,即使是长时间阅读也不会觉得疲劳。我本身是从事数据分析相关工作,一直想深入了解Spark SQL在实际项目中的应用,而这本书的标题《Spark SQL大数据实例开发教程》正中我的需求。我更关注的是它能否提供真正落地、可复用的项目案例,而不是那些停留在概念层面的理论讲解。例如,书中是否会详细讲解如何从数据采集、清洗、转换,到模型训练和结果可视化,整个大数据处理流程的Spark SQL实现?能否涵盖一些在实际工作中经常遇到的问题,比如大规模数据的Join操作如何优化、如何处理脏数据、如何构建实时数据处理管道等等?我特别期待书中能有像构建用户画像、推荐系统、欺诈检测这样具有代表性的实例,并且能够清晰地展示出代码实现、关键技术点以及性能调优的思路。如果书中还能提供一些关于Spark SQL与Hadoop生态其他组件(如HDFS、Hive、Kafka)的集成案例,那就更好了,这样能帮助我更全面地理解Spark SQL在大数据生态中的定位和作用。我希望这本书不仅仅是技术手册,更是一本能够激发我解决实际大数据问题的灵感源泉。

评分

作为一个对大数据技术充满好奇的在校学生,我对《Spark SQL大数据实例开发教程》这本书抱有极大的期待。我之前学习过一些基础的SQL知识,也接触过一些大数据框架的理论,但总感觉缺乏将这些知识融会 आम (Aam - 广泛的,大众的) 到实际项目中的能力。这本书的“实例开发教程”几个字对我来说非常重要,它意味着我将有机会看到 Spark SQL 如何被应用于解决真实世界的业务问题。我特别希望能看到书中提供的那些实例,能否详细地解释每一个步骤背后的逻辑,以及为什么选择这样的实现方式。比如,书中是否会讲解如何搭建Spark SQL的开发环境,如何连接不同的数据源,以及如何使用Spark SQL进行复杂的数据查询和分析。我更关注的是,书中是否会分享一些在实际项目开发过程中可能会遇到的坑,以及如何去规避它们。例如,对于初学者来说,如何有效地进行SQL语句的优化以提高查询效率,如何处理大数据量下的内存溢出问题,以及如何编写可维护、可扩展的代码。如果书中还能提供一些关于Spark SQL的SQL函数和操作符的详细讲解,以及它们在实际应用中的技巧,那就更棒了。我希望能通过这本书,不仅仅是学会Spark SQL的语法,更能掌握用它来解决实际问题的“道”与“术”。

评分

最近我一直在寻找一本能够系统性地讲解Spark SQL在企业级应用中的实战书籍,而《Spark SQL大数据实例开发教程》这个书名听起来非常贴切。我是一名资深的数据工程师,日常工作离不开对海量数据的处理和分析。我最看重的是这本书是否能够提供一些足够深入且贴合企业实际需求的案例。例如,在电商领域,如何利用Spark SQL进行用户行为分析、商品销售预测、精准营销推荐等?在金融领域,如何运用Spark SQL进行风险评估、反欺诈监测、交易分析?我希望书中能够详细展示这些场景下的数据处理流程,包括数据预处理、特征工程、模型构建以及结果的应用。更重要的是,我希望书中能够深入探讨Spark SQL在性能调优方面的实践经验,比如如何通过SQL语句的优化、数据分区的策略、缓存机制的使用,以及利用Spark SQL的 Catalyst 优化器来提升查询效率。此外,我还需要了解Spark SQL与流计算框架(如Spark Streaming/Structured Streaming)的结合应用,以满足实时数据分析的需求。如果书中还能提供一些关于Spark SQL在云原生环境(如Kubernetes)下的部署和管理方案,那就更完美了。这本书能否真正成为我解决复杂大数据问题的得力助手,是我最关心的。

评分

我是一个热爱钻研开源技术,并且对数据科学领域充满热情的研究者。《Spark SQL大数据实例开发教程》这本书的出现,对我来说无疑是及时雨。我之前阅读过不少关于Spark的理论书籍,但总觉得缺乏一个清晰的、从实践出发的指导。我非常期待这本书能够提供一些真正具有启发性的项目案例,能够让我深入理解Spark SQL的强大之处。我希望书中不仅仅是列出代码,更能详细地解析每一个Spark SQL语句背后的原理,以及它如何与Spark的执行引擎相结合。例如,书中是否会讲解Spark SQL的查询优化过程,如何理解其查询计划,以及如何根据这些信息来优化SQL语句以获得最佳性能?我更关注的是,书中是否会提供一些关于如何处理非结构化或半结构化数据(如JSON、Parquet)的实例,以及如何利用Spark SQL进行高效的数据探索和特征提取。如果书中还能包含一些关于Spark SQL与其他大数据组件(如MLlib)的集成案例,能够展示如何构建端到端的数据科学流程,那就更令人兴奋了。我希望通过这本书,不仅能够掌握Spark SQL的开发技巧,更能对其在大数据分析和机器学习中的应用有更深层次的理解,并能将其应用于我自己的研究项目中。

评分

书知识点太老了,居然是1.6的,现在都2.3了,至少应该是2.X

评分

看了好久才来评价,以保持评价的客观性.说实话这本书实在太一般了,spark2.0以后变化很大,而本书还是基于spark1.6来讲。失望

评分

goof

评分

书知识点太老了,居然是1.6的,现在都2.3了,至少应该是2.X

评分

书知识点太老了,居然是1.6的,现在都2.3了,至少应该是2.X

评分

goof

评分

goof

评分

看了好久才来评价,以保持评价的客观性.说实话这本书实在太一般了,spark2.0以后变化很大,而本书还是基于spark1.6来讲。失望

评分

书知识点太老了,居然是1.6的,现在都2.3了,至少应该是2.X

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.idnshop.cc All Rights Reserved. 静思书屋 版权所有