首页 > 其他分享 >Apache Spark 学习路径

Apache Spark 学习路径

时间:2024-11-08 14:16:47浏览次数:3  
标签:路径 学习 如何 内存 Apache Spark 数据 spark

文章目录

一、基础知识

1.1 大数据概念

大数据概念

  • 什么是大数据
    • 大数据是指那些传统数据处理软件难以处理的大量、高速或多样化信息资产。大数据的特点通常被总结为“4V”:Volume(体量大)、Velocity(速度快)、Variety(多样性)、Veracity(真实性)。
  • 大数据处理的需求和挑战
    • 需要新的技术来存储、处理和分析这些海量数据。挑战包括数据质量控制、数据安全、隐私保护、数据治理、高性能处理等。
  • 大数据生态系统概览
    • 包括Hadoop、Spark、HBase、Cassandra、Elasticsearch、Kafka、Flink等。

示例:一个电商网站每天产生数百万条交易记录,这些记录需要进行实时分析以优化推荐系统。

1.2 Spark介绍

  • Spark的历史和发展
    • Spark最初是由加州大学伯克利分校的AMPLab开发,并于2009年开始作为一个研究项目。
  • Spark的优势和特点
    • Spark以其内存计算能力著称,支持多种数据处理模式(批处理、交互式查询、流处理、机器学习)。
  • Spark与Hadoop的比较
    • Hadoop主要依赖MapReduce进行批处理,而Spark提供了更丰富的API和更高的性能。

示例:使用Spark处理日志文件,统计每小时的访问量,并找出异常峰值。

1.3 Spark架构

  • Spark核心组件
    • 包括Driver、Cluster Manager、Worker Node、Executor。
  • Spark运行模式
    • 包括Local、Standalone、YARN、Mesos和Kubernetes。
  • Spark应用程序生命周期
    • 从提交应用开始,经历初始化、调度、执行、结果返回等阶段。
  • Driver, Executor, Task, Job, Stage等概念
    • 理解这些概念有助于理解Spark的执行流程和工作方式。

示例:假设有一个Spark应用,它读取HDFS中的CSV文件,进行过滤和聚合操作,然后将结果写回HDFS。在这个过程中,Driver程序负责调度,Executors负责执行任务。

二、安装与配置

  • Spark环境搭建
    • 下载并解压Spark发行版,设置环境变量。
  • 配置Spark集群
    • 根据所选的集群管理器配置相应的集群,比如YARN或Mesos。
  • Spark shell的使用
    • 启动Spark shell进行交互式编程,快速测试代码片段。

示例:在Ubuntu上安装Spark,并配置SPARK_HOME和PATH环境变量。

# 下载Spark
wget https://archive.apache.org/dist/spark/spark-3.2.1/spark-3.2.1-bin-hadoop3.2.tgz
tar xvf spark-3.2.1-bin-hadoop3.2.tgz
sudo mv spark-3.2.1-bin-hadoop3.2 /usr/local/spark

# 配置环境变量
echo 'export SPARK_HOME=/usr/local/spark' >> ~/.bashrc
echo 'export PATH=$SPARK_HOME/bin:$PATH' >> ~/.bashrc

三、编程模型

  • RDD (Resilient Distributed Datasets)
    • 理解RDD的不可变性、容错性和可分区性。
  • RDD的创建
    • 可以通过并行化集合、外部数据集或现有RDD转换得到新RDD。
  • RDD的转换 (transformations)
    • 如map, filter, reduceByKey等。
  • RDD的动作 (actions)
    • 如collect, count, first等。
  • RDD的持久化 (persistence)
    • 通过persist或cache方法将数据保留在内存或磁盘上。
  • 缓存与检查点 (caching and checkpointing)
    • 提高迭代计算效率和容错性。

示例:创建一个RDD并进行简单的转换和动作。

from pyspark import SparkContext

sc = SparkContext("local", "First App")
data = [1, ⅔, 4, 5, 6, 7, 8, 9, 10]
rdd = sc.parallelize(data)

# 转换
even_numbers = rdd.filter(lambda x: x % 2 == 0)

# 动作
print(even_numbers.collect())  # 输出: [2, 4, 6, 8, 10]

四、核心API

4.1、Spark SQL

  • DataFrame和Dataset
    • DataFrame是带有Schema的分布式数据集合,Dataset是类型安全的DataFrame。
  • SQL查询
    • 使用SQL语句直接查询数据。
  • 用户自定义函数 (UDFs)
    • 允许用户定义自己的函数来扩展SQL的功能。
  • 数据源
    • 支持多种格式的数据源,如Parquet, JSON, CSV, Avro等。
  • Catalyst优化器
    • 负责解析、分析、优化和执行逻辑计划。

示例:使用DataFrame和SQL查询。

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("SparkSQLExample").getOrCreate()
data = [("James", 34), ("Anna", 28), ("Robert", ¼)]
df = spark.createDataFrame(data, ["name", "age"])

# 注册临时表
df.createOrReplaceTempView("people")

# SQL查询
result = spark.sql("SELECT * FROM people WHERE age > 30")
result.show()

4.2 Spark Streaming

  • DStream (Discretized Stream)
    • 代表连续不断的数据流。
  • 输入输出源
    • 支持多种数据源,如Kafka, Flume, HDFS等。
  • 窗口操作
    • 支持滑动窗口和滚动窗口操作。
  • 状态管理
    • 维护状态信息,如更新状态、保持状态一致性。
  • Structured Streaming
    • 基于DataFrame/Dataset API的流处理引擎,提供更强大的表达能力和更简洁的API。

示例:使用Structured Streaming处理实时数据。

from pyspark.sql import SparkSession
from pyspark.sql.functions import *

spark = SparkSession.builder \
    .appName("StructuredStreamingExample") \
    .getOrCreate()

# 读取socket数据
lines = spark.readStream.format("socket").option("host", "localhost").option("port", 9999).load()

# 处理数据
words = lines.select(explode(split(lines.value, " ")).alias("word"))
wordCounts = words.groupBy("word").count()

# 输出到控制台
query = wordCounts.writeStream.outputMode("complete").format("console").start()
query.awaitTermination()

4.3 MLlib

  • 机器学习管道 (Pipelines)
    • 用于构建和评估机器学习流程。
  • 特征提取和转换
    • 如标准化、归一化、特征选择等。
  • 常见机器学习算法
    • 支持监督学习、无监督学习等多种算法。
  • 模型评估与选择
    • 使用交叉验证、网格搜索等技术来选择最优模型。
  • 模型保存与加载
    • 支持模型的持久化,以便后续重用。

示例:使用MLlib进行简单的线性回归。

from pyspark.ml.regression import LinearRegression
from pyspark.ml.linalg import Vectors

# 创建训练数据
training = spark.createDataFrame([
    (1.0, Vectors.dense([1.0])),
    (2.0, Vectors.dense([2.0])),
    (3.0, Vectors.dense([3.0])),
    (4.0, Vectors.dense([4.0])),
    (5.0, Vectors.dense([5.0])),
    (6.0, Vectors.dense([6.0]))
], ["label", "features"])

# 训练模型
lr = LinearRegression(featuresCol="features")
model = lr.fit(training)

# 打印系数
print("Coefficients: %s" % str(model.coefficients))

4.4 GraphX

  • 图计算基础
    • 了解图论的基本概念。
  • Graph和VertexRDD
    • GraphX中的图表示法。
  • 图算法
    • 实现常用的图算法,如PageRank, Shortest Paths, Triangle Count等。

示例:使用GraphX计算PageRank。

import org.apache.spark.graphx._
import org.apache.spark.rdd.RDD

// 加载边
val edges: RDD[Edge[Double]] = sc.textFile("hdfs://path/to/edges.txt").map { line =>
  val fields = line.split(",")
  Edge(fields(0).toLong, fields(1).toLong, 1.0)
}

// 创建图
val graph = Graph.fromEdges(edges, 0.0)

// 计算PageRank
val ranks = graph.pageRank(0.001).vertices

// 打印结果
ranks.collect().foreach(println)

五、Spark机制

5.1 性能调优

  • Spark调优原则
    • 合理分配资源、减少shuffle、优化数据布局等。
  • 数据局部性 (data locality)
    • 尽量让数据和计算靠近,减少网络传输。
  • 并行度 (parallelism)
    • 设置合适的并行度以充分利用集群资源。
  • 分区 (partitioning)
    • 通过合理的分区策略提高性能。
  • 内存管理
    • 了解Spark的内存模型,合理配置内存参数。
  • 序列化 (serialization)
    • 选择高效序列化机制,减少序列化开销。

示例:通过增加并行度来优化Spark作业。

rdd = sc.parallelize(range(1, 100000), 10)  # 设置并行度为10

5.2 Spark内部机制

  • Spark的执行流程
    • 理解从提交作业到完成执行的整个过程。
  • DAG (Directed Acyclic Graph) 执行计划
    • Spark如何将逻辑计划转化为物理执行计划。
  • Shuffle操作
    • Shuffle是Spark中最耗资源的操作之一,理解它的机制很重要。
  • Spark UI监控
    • 通过Web界面监控Spark应用程序的状态。
  • 日志与调试
    • 利用日志文件定位和解决问题。

示例:通过Spark UI查看执行计划。

在浏览器中打开http://:4040,可以查看Stage和Task的执行情况。

5.3 Spark生态系统

  • Spark与Hadoop集成
    • 利用HDFS作为存储,YARN作为资源管理。
  • Spark与Alluxio
    • Alluxio是一个分布式虚拟文件系统,可以加速Spark访问存储的速度。
  • Spark与Zeppelin
    • Zeppelin提供了一个交互式的笔记本环境,支持多种数据科学任务。
  • Spark与Kafka
    • Kafka是一个高吞吐量的分布式消息系统,常与Spark Streaming一起使用。
  • Spark与TensorFlow
    • 结合使用进行大规模机器学习和深度学习。

示例:使用Spark和Kafka进行实时流处理。

from pyspark.sql import SparkSession
from pyspark.sql.functions import *

spark = SparkSession.builder \
    .appName("KafkaSparkStreaming") \
    .getOrCreate()

# 读取Kafka数据
df = spark.readStream \
    .format("kafka") \
    .option("kafka.bootstrap.servers", "host1:port1,host2:port2") \
    .option("subscribe", "topic1") \
    .load()

# 处理数据
parsed_df = df.selectExpr("CAST(key AS STRING)", "CAST(value AS STRING)")

# 输出到控制台
query = parsed_df.writeStream \
    .outputMode("append") \
    .format("console") \
    .start()

query.awaitTermination()

5.4 实战与案例

  • 项目实战
    • 通过实际项目来应用所学知识,如ETL流程、实时流处理、机器学习模型等。
  • 最佳实践
    • 学习如何组织代码、实施测试、保证安全、设置监控等。

示例:一个完整的ETL流程,包括从数据库中抽取数据、转换数据格式、清洗数据,并将结果加载到数据仓库。

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("ETLExample").getOrCreate()

# 从MySQL数据库读取数据
jdbcDF = spark.read \
    .format("jdbc") \
    .option("url", "jdbc:mysql://localhost:3306/database") \
    .option("dbtable", "table") \
    .option("user", "username") \
    .option("password", "password") \
    .load()

# 数据转换和清洗
cleanedDF = jdbcDF.na.drop()  # 删除包含null值的行
transformedDF = cleanedDF.withColumn("new_column", col("existing_column") + 10)

# 将结果写入Hive表
transformedDF.write.saveAsTable("hive_table_name")

六、 深入理解Spark架构

  • Spark架构:
    • Driver: 学习Driver的作用,它是应用程序的主控节点,负责创建SparkContext、解析和执行用户提交的任务。
    • Executor: 了解Executor的职责,它是Worker节点上的进程,负责运行具体的任务。
    • Task: 理解Task是Executor中运行的最小工作单元。
    • Job: 学习如何一个Action触发一个Job,以及Job是如何分解成多个Stage的。
    • Stage: 理解Stage是由一组相同的Task组成的,这些Task可以并行执行。
  • Spark调度器(Scheduler):
    • DAGScheduler: 学习DAGScheduler如何将逻辑计划转换为物理执行计划,包括Stage的划分。
    • TaskScheduler: 了解TaskScheduler如何将Task分配给Executor执行。
  • 执行器(Executor):
    • 了解Executor如何管理和执行Task,以及如何处理数据的本地性和Shuffle。
  • 内存管理:
    • 学习Spark的内存管理策略,包括堆内内存(On-Heap Memory)和堆外内存(Off-Heap Memory)。
    • 了解Tungsten项目如何优化内存使用。
  • RDD, DAG, Shuffle:
    • RDD: 理解RDD的不可变性和分区特性,以及如何通过Transformation操作创建新的RDD。
    • DAG: 学习DAG的构建过程,如何表示任务之间的依赖关系。
    • Shuffle: 了解Shuffle的机制,包括Hash Shuffle、Sort-based Shuffle等,以及如何优化Shuffle操作。

七、 优化Spark应用程序

  • 性能调优:
    • 配置参数:
      • spark.executor.memory: 设置Executor的内存大小。
      • spark.executor.cores: 设置每个Executor的CPU核心数。
      • spark.default.parallelism: 设置默认的并行度。
      • spark.shuffle.compress: 开启Shuffle压缩以减少I/O开销。
    • 数据倾斜处理:
      • Salting: 通过添加随机前缀来分散数据。
      • Bucketing: 通过对数据进行分区来减少数据倾斜。
      • Repartitioning: 重新分区数据以平衡负载。
    • 内存管理:
      • 了解如何调整内存比例(如spark.storage.memoryFractionspark.shuffle.memoryFraction)。
      • 学习如何使用Tungsten的内存管理特性。
    • 序列化机制:
      • Kryo: 学习如何配置和使用Kryo序列化,以提高序列化和反序列化的性能。
      • Java序列化: 了解Java序列化的特点及其性能影响。

八、 高级API和库

  • Spark SQL进阶:
    • Catalyst Optimizer: 学习Catalyst Optimizer如何优化查询计划,包括谓词下推、列裁剪等。
    • Tungsten: 了解Tungsten如何优化内存布局和代码生成,提高执行效率。
  • DataFrame和Dataset:
    • UDF: 学习如何定义和使用用户自定义函数(UDF)。
    • 高级操作: 掌握复杂的DataFrame和Dataset操作,如窗口函数、聚合操作等。
  • Spark Streaming / Structured Streaming:
    • 窗口操作: 学习如何使用窗口(Window)操作处理流数据。
    • 状态管理: 了解如何使用Stateful Streaming处理有状态的流数据。
    • 容错机制: 学习Structured Streaming的容错机制,确保数据的一致性和完整性。
  • MLlib:
    • 高级算法: 学习集成学习、深度学习等高级算法。
    • 模型持久化: 了解如何保存和加载模型。
    • 特征工程: 学习如何使用MLlib进行特征提取和转换。
  • GraphX:
    • 图创建: 学习如何从不同数据源创建图。
    • 图算法: 掌握常见的图算法,如PageRank、最短路径等。
    • Pregel API: 了解Pregel API及其在GraphX中的应用。

九、 深入学习特定主题

  • 源码分析:
    • 调度器源码: 阅读DAGScheduler和TaskScheduler的相关源码。
    • 执行器源码: 分析Executor如何管理和执行Task。
    • 内存管理源码: 了解Tungsten项目的内存管理实现。
  • 高级数据结构:
    • 广播变量: 学习如何使用广播变量减少网络传输。
    • 累加器: 了解累加器的使用场景和实现机制。
  • Spark与外部系统的集成:
    • Hadoop: 了解如何读写HDFS中的数据。
    • Hive: 学习如何使用Spark SQL查询Hive表。
    • Kafka: 了解如何从Kafka中读取和写入数据。
    • HBase: 学习如何与HBase进行交互。
  • 监控和调试:
    • Spark UI: 学习如何使用Spark UI监控作业的状态和性能。
    • 日志分析: 了解如何查看和分析Spark的日志文件。
    • 监控工具: 学习如何使用Ganglia、Prometheus等工具进行监控。

十、实战项目

  • 复杂数据处理:
    • 日志分析: 构建一个完整的日志分析系统,包括日志收集、解析、统计和可视化。
    • 推荐系统: 使用Spark构建一个推荐系统,包括数据预处理、模型训练和推荐结果生成。
    • 金融风控: 构建一个金融风控系统,包括数据清洗、特征工程、模型训练和风险评估。
  • 机器学习项目:
    • 端到端管道: 构建一个端到端的机器学习管道,包括数据预处理、模型训练、评估和部署。
    • 集成学习: 使用MLlib中的集成学习算法(如Random Forest、Gradient-Boosted Trees)进行大规模数据集的训练。
    • 深度学习集成: 结合TensorFlow或PyTorch,使用Spark进行大规模深度学习模型的训练和推理。
  • 实时数据处理:
    • 实时ETL: 构建一个实时ETL系统,从Kafka读取数据,进行实时转换和加载到目标存储。
    • 实时报表: 创建一个实时报表系统,展示实时数据的统计结果。

十一、 深入研究Spark核心

  • 源码阅读:
    • 调度器: 详细阅读DAGScheduler和TaskScheduler的源码,理解其工作原理。
    • 执行器: 分析Executor的源码,了解其内部实现。
    • 内存管理: 研究Tungsten项目的源码,理解内存优化的具体实现。
  • 性能调优:
    • 任务并行度: 通过调整spark.default.parallelismspark.sql.shuffle.partitions等参数来优化并行度。
    • 内存调优: 通过调整内存比例(如spark.storage.memoryFractionspark.shuffle.memoryFraction)来优化内存使用。
    • 数据局部性: 了解数据局部性的重要性,以及如何通过合理设置数据位置来提高性能。
    • Shuffle优化: 通过调整Shuffle相关参数(如spark.shuffle.file.buffer)来优化Shuffle操作。
    • 广播变量和累加器: 学习如何高效使用广播变量和累加器来减少网络传输和提高性能。
  • 故障排除:
    • 日志分析: 通过查看日志文件来定位问题。
    • Spark UI: 使用Spark UI来监控作业状态和性能指标。
    • 调试工具: 学习如何使用JVM调试工具(如JVisualVM)来调试Spark应用程序。

十二、 高级数据处理

  • 复杂数据管道:
    • 数据清洗: 学习如何处理缺失值、异常值和重复数据。
    • 数据转换: 掌握复杂的数据转换操作,如数据规范化、特征工程等。
    • 数据聚合: 学习如何使用Spark进行大规模数据的聚合操作。
  • 实时数据处理:
    • 低延迟处理: 通过调整Spark Structured Streaming的配置参数来实现低延迟处理。
    • 高吞吐量: 通过优化数据处理逻辑和资源配置来提高吞吐量。
    • 容错机制: 了解Structured Streaming的容错机制,确保数据的一致性和完整性。
  • 数据倾斜处理:
    • Salting: 通过添加随机前缀来分散数据。
    • Bucketing: 通过对数据进行分区来减少数据倾斜。
    • Repartitioning: 重新分区数据以平衡负载。

十三、 机器学习与AI

  • 高级机器学习:
    • 集成学习: 学习如何使用MLlib中的集成学习算法(如Random Forest、Gradient-Boosted Trees)进行大规模数据集的训练。
    • 深度学习: 了解如何使用MLlib中的深度学习算法(如Multilayer Perceptron Classifier)进行训练。
  • 深度学习集成:
    • TensorFlow集成: 学习如何将Spark与TensorFlow结合,使用Spark进行大规模数据的预处理和模型训练。
    • PyTorch集成: 了解如何将Spark与PyTorch结合,构建端到端的深度学习流水线。
  • 模型部署与服务:
    • 模型保存与加载: 学习如何使用MLlib保存和加载模型。
    • 模型服务: 了解如何将训练好的模型部署到生产环境中,并提供预测服务。

十四、 图处理与复杂网络分析

  • GraphX高级用法:
    • Pregel API: 了解Pregel API的工作原理及其在GraphX中的应用。
    • 图算法: 掌握常见的图算法,如PageRank、最短路径等。
    • 图的创建和操作: 学习如何从不同数据源创建图,并进行复杂的图操作。
  • 图神经网络:
    • GNN介绍: 了解图神经网络(GNN)的基本概念和应用场景。
    • Spark与GNN集成: 探索如何使用Spark结合图神经网络进行复杂的网络分析。

十五、 大规模数据存储与访问

  • 与Hadoop生态集成:
    • HDFS: 了解如何使用Spark读写HDFS中的数据。
    • Hive: 学习如何使用Spark SQL查询Hive表。
    • HBase: 了解如何与HBase进行交互,包括读写数据和执行复杂查询。
  • 数据湖技术:
    • Delta Lake: 学习如何使用Delta Lake进行事务性的数据管理。
    • Hudi: 了解Hudi的特点及其在数据湖中的应用。
    • Iceberg: 探索Iceberg的数据格式和管理特性。

十六、 安全与治理

  • 安全性:
    • Kerberos认证: 了解如何配置和使用Kerberos进行身份验证。
    • SSL加密通信: 学习如何配置Spark以使用SSL进行加密通信。
    • 访问控制: 了解如何配置Spark以实现细粒度的访问控制。
  • 数据治理:
    • 数据质量检查: 学习如何使用Spark进行数据质量检查,包括数据一致性、完整性和准确性。
    • 数据血缘追踪: 了解如何使用Spark和其他工具(如Apache Atlas)进行数据血缘追踪。
    • 元数据管理: 学习如何使用Spark和其他工具(如Apache Atlas、Hive Metastore)进行元数据管理。

标签:路径,学习,如何,内存,Apache,Spark,数据,spark
From: https://blog.csdn.net/Davina_yu/article/details/143613703

相关文章

  • PySpark中的StructStreaming的使用
    使用pyspark编写StructStreaming的入门案例,如有雷同,纯属巧合,所有代码亲测可用。一、SparkStreaming的不足1.基于微批,延迟高不能做到真正的实时2.DStream基于RDD,不直接支持SQL3.流批处理的API应用层不统一,(流用的DStream-底层是RDD,批用的DF/DS/RDD)4.不支持EventTi......
  • 计算机毕业设计Python+图神经网络手机推荐系统 手机价格预测 手机可视化 手机数据分析
    温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO......
  • 【路径规划】基于A*-三次样条曲线求解UAV路径规划问题
    摘要本文提出了一种结合A算法与三次样条曲线的无人机(UAV)路径规划方法。该方法通过A算法找到从起点到终点的最优路径,再利用三次样条曲线对路径进行平滑处理,以确保无人机在复杂地形中实现平稳的导航和避障能力。实验结果表明,基于A*和三次样条曲线的路径规划方法在避免障碍的同......
  • SpringBoot获取项目文件的绝对路径和相对路径
    @目录1.场景2.说明项目代码大致样式获取路径说明3.举例说明网上常见几种方法的路径获取结果1.场景比如上传图片或者读取项目里的excel文件内容等,都需要准确获取文件路径2.说明项目代码大致样式获取路径说明所谓获取的相对路径,其实是获取项目打包后的target目录的路径,而......
  • spark的学习-03
    RDD的创建的两种方式:方式一:并行化一个已存在的集合方法:parallelize并行的意思将一个集合转换为RDD方式二:读取外部共享存储系统方法:textFile、wholeTextFile、newAPIHadoopRDD等读取外部存储系统的数据转换为RDDRDD的五大特征:每个RDD都由一系列的分区构成RDD的转......
  • SparkSQL
    一、概述1.1、什么是sparksql  SparkSQL是Spark中用于处理结构化数据的模块,它提供了两个主要的编程抽象:DataFrame和DataSet,并且还可以作为分布式SQL查询引擎使用。SparkSQL的设计目的是简化结构化数据的处理和查询,同时提高执行效率。  传统的HiveSQL通过......
  • PHP与Apache、Nginx的性能对比与优化技巧
    PHP与Apache、Nginx的性能对比与优化技巧在现代web开发中,PHP作为一种常见的服务器端脚本语言,通常需要与Web服务器(如Apache和Nginx)配合使用。Apache与Nginx各自的架构特点和性能表现有很大的不同,因此在PHP应用的部署过程中,选择合适的Web服务器并对其进行优化至关重要。Apache与N......
  • import导入文件路径注意点
    目录结构-lib-main.py-package1-subA.py-subB.py-package2-subC.py-subD.py要在main文件中导入subA#方案1-main.pyfrompackage1importsubA#方案2-main.pyfromlib.package1importsubA要在main文件中,通过subA导......
  • anaconda配置path路径的操作
    配置Anaconda的PATH路径可以帮助你在命令行中直接使用Anaconda的命令,如conda、jupyter等,而不需要每次都指定完整路径。以下是详细的操作步骤:Windows操作系统1.打开环境变量设置右键点击“此电脑”或“计算机”图标,然后选择“属性”。在左侧菜单中选择“高级系......
  • Apache DolphinScheduler将上游Task执行结果传递给下游
    01背景公司的数据开发平台需要用到DolphinScheduler做任务调度,其中一个场景是:上游任务执行结束后,需要将任务执行结果传递给下游任务。DolphinScheduler肯定是能实现任务之间的传参的,具体的可以看:DolphinScheduler|文档中心(https://dolphinscheduler.apache.org/zh-cn/docs/......