Hive配置文件Hive-site.xml参数说明用途

Hive配置文件hive-site.xml中参数说明和用法

参数说明

参数名称默认值用法
hive.metastore.uris-Hive元数据存储的URI。
hive.metastore.client.socket.timeout600Hive元数据客户端套接字超时时间。
hive.metastore.warehouse.dir/user/hive/warehouseHive数据仓库目录。
hive.warehouse.subdir.inherit.permstrue子目录是否继承权限。
hive.auto.convert.jointrue自动转换连接类型的Join操作。
hive.auto.convert.join.noconditionaltask.size10000000自动转换连接类型的Join操作时条件不满足的最大数据量。
hive.optimize.bucketmapjoin.sortedmergefalse是否优化Bucket Map Join的Sorted Merge。
hive.smbjoin.cache.rows10000SMB Join操作缓存的行数。
hive.server2.logging.operation.enabledfalse是否启用Hive Server2日志记录操作。
hive.server2.logging.operation.log.location${system:java.io.tmpdir}/ ${system:user.name} /operation_logsHive Server2操作日志的存储位置。
mapred.reduce.tasks-MapReduce作业的Reduce任务数。
hive.exec.reducers.bytes.per.reducer67108864每个Reduce任务的数据量。
hive.exec.copyfile.maxsize33554432最大允许复制文件的大小。
hive.exec.reducers.max-1同时运行的最大Reduce任务数。
hive.vectorized.groupby.checkinterval100000Vectorized Group By操作的检查间隔。
hive.vectorized.groupby.flush.percent0.1Vectorized Group By操作的Flush比例。
hive.compute.query.using.statstrue是否使用统计信息来优化查询计划。
hive.vectorized.execution.enabledfalse是否启用向量化执行引擎。
hive.vectorized.execution.reduce.enabledfalse是否在Reduce阶段启用向量化执行。
hive.vectorized.use.vectorized.input.formatfalse是否使用向量化输入格式。
hive.vectorized.use.checked.expressionsfalse是否使用检查表达式的向量化执行。
hive.vectorized.use.vector.serde.deserializefalse是否使用向量化序列化和反序列化。
hive.vectorized.adaptor.usage.modeoff向量化适配器的使用模式。
hive.vectorized.input.format.excludes-排除的向量化输入格式列表。
hive.merge.mapfilestrue是否合并Map输出的小文件。
hive.merge.mapredfilesfalse是否合并MapReduce输出的小文件。
hive.cbo.enablefalse是否启用CBO优化。
hive.fetch.task.conversionnoneFetch任务转换级别。
hive.fetch.task.conversion.threshold-1触发Fetch任务转换的数据量阈值。
hive.limit.pushdown.memory.usage0.1Limit操作的内存使用百分比。
hive.merge.sparkfilesfalse是否合并Spark任务输出的小文件。
hive.merge.smallfiles.avgsize-1合并小文件时的平均大小。
hive.merge.size.per.task-1每个任务合并的数据量。
hive.optimize.reducededuplicationtrue是否启用重复消除优化。
hive.optimize.reducededuplication.min.reducer4最小Reduce任务数以启用重复消除优化。
hive.map.aggrfalse是否启用Map端聚合。
hive.map.aggr.hash.percentmemory0.5Map端聚合的哈希表内存比例。
hive.optimize.sort.dynamic.partitionfalse是否优化动态分区排序。
hive.execution.enginemrHive执行引擎类型。
spark.executor.memory1gSpark Executor的内存大小。
spark.driver.memory1gSpark Driver的内存大小。
spark.executor.cores1每个Spark Executor的核心数。
spark.yarn.driver.memoryOverhead384Spark Driver的内存Overhead。
spark.yarn.executor.memoryOverhead384Spark Executor的内存Overhead。
spark.dynamicAllocation.enabledfalse是否启用动态资源分配。
spark.dynamicAllocation.initialExecutors-1动态资源分配的初始Executor数量。
spark.dynamicAllocation.minExecutors-1动态资源分配的最小Executor数量。
spark.dynamicAllocation.maxExecutors-1动态资源分配的最大Executor数量。
hive.metastore.execute.setugifalse是否在Hive元数据存储中执行setugi操作。
hive.support.concurrencytrue是否支持并发操作。
hive.zookeeper.quorum-ZooKeeper服务器列表。
hive.zookeeper.client.port-ZooKeeper客户端端口号。
hive.zookeeper.namespacedefaultHive使用的ZooKeeper命名空间。
hive.cluster.delegation.token.store.classorg.apache.hadoop.hive .thrift.MemoryTokenStore集群委派令牌存储类。
hive.server2.enable.doAsfalse是否启用Hive Server2用户代理模式。
hive.metastore.sasl.enabledfalse是否启用Hive元数据存储的SASL认证。
hive.server2.authenticationNONEHive Server2的认证方式。
hive.metastore.kerberos.principal-Hive元数据存储的Kerberos主体名称。
hive.server2.authentication.kerberos.principal-Hive Server2的Kerberos主体名称。
spark.shuffle.service.enabledtrue是否启用Spark Shuffle服务。
hive.strict.checks.orderby.no.limittrue是否在没有Limit操作的OrderBy语句中执行严格检查。
hive.strict.checks.no.partition.filtertrue是否在没有分区过滤条件的查询中执行严格检查。
hive.strict.checks.type.safetytrue是否执行严格的类型安全性检查。
hive.strict.checks.cartesian.productfalse是否执行严格的笛卡尔积检查。
hive.strict.checks.bucketingtrue是否执行严格的桶排序检查。

参数示例

<configuration>
  <!-- Hive元数据存储的URI -->
  <property>
    <name>hive.metastore.uris</name>
    <value>thrift://myhost:9083</value>
  </property>

  <!-- Hive元数据客户端套接字超时时间(以毫秒为单位) -->
  <property>
    <name>hive.metastore.client.socket.timeout</name>
    <value>300</value>
  </property>

  <!-- Hive数据仓库目录 -->
  <property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
  </property>

  <!-- 子目录是否继承权限 -->
  <property>
    <name>hive.warehouse.subdir.inherit.perms</name>
    <value>true</value>
  </property>

  <!-- 自动转换连接类型的Join操作 -->
  <property>
    <name>hive.auto.convert.join</name>
    <value>true</value>
  </property>

  <!-- 自动转换连接类型的Join操作时条件不满足的最大数据量(以字节为单位) -->
  <property>
    <name>hive.auto.convert.join.noconditionaltask.size</name>
    <value>20971520</value>
  </property>

  <!-- 是否优化Bucket Map Join的Sorted Merge -->
  <property>
    <name>hive.optimize.bucketmapjoin.sortedmerge</name>
    <value>false</value>
  </property>

  <!-- SMB Join操作缓存的行数 -->
  <property>
    <name>hive.smbjoin.cache.rows</name>
    <value>10000</value>
  </property>

  <!-- 是否启用Hive Server2日志记录操作 -->
  <property>
    <name>hive.server2.logging.operation.enabled</name>
    <value>true</value>
  </property>

  <!-- Hive Server2操作日志的存储位置 -->
  <property>
    <name>hive.server2.logging.operation.log.location</name>
    <value>/var/log/hive/operation_logs</value>
  </property>

  <!-- MapReduce作业的Reduce任务数 -->
  <property>
    <name>mapred.reduce.tasks</name>
    <value>-1</value>
  </property>

  <!-- 每个Reduce任务的数据量(以字节为单位) -->
  <property>
    <name>hive.exec.reducers.bytes.per.reducer</name>
    <value>67108864</value>
  </property>

  <!-- 最大允许复制文件的大小(以字节为单位) -->
  <property>
    <name>hive.exec.copyfile.maxsize</name>
    <value>33554432</value>
  </property>

  <!-- 同时运行的最大Reduce任务数 -->
  <property>
    <name>hive.exec.reducers.max</name>
    <value>1099</value>
  </property>

  <!-- Vectorized Group By操作的检查间隔 -->
  <property>
    <name>hive.vectorized.groupby.checkinterval</name>
    <value>4096</value>
  </property>

  <!-- Vectorized Group By操作的Flush比例 -->
  <property>
    <name>hive.vectorized.groupby.flush.percent</name>
    <value>0.1</value>
  </property>

  <!-- 是否使用统计信息来优化查询计划 -->
  <property>
    <name>hive.compute.query.using.stats</name>
    <value>false</value>
  </property>

  <!-- 是否启用向量化执行引擎 -->
  <property>
    <name>hive.vectorized.execution.enabled</name>
    <value>true</value>
  </property>

  <!-- 是否在Reduce阶段启用向量化执行 -->
  <property>
    <name>hive.vectorized.execution.reduce.enabled</name>
    <value>true</value>
  </property>

  <!-- 是否使用向量化输入格式 -->
  <property>
    <name>hive.vectorized.use.vectorized.input.format</name>
    <value>true</value>
  </property>

  <!-- 是否使用检查表达式的向量化执行 -->
  <property>
    <name>hive.vectorized.use.checked.expressions</name>
    <value>true</value>
  </property>

  <!-- 是否使用向量化序列化和反序列化 -->
  <property>
    <name>hive.vectorized.use.vector.serde.deserialize</name>
    <value>false</value>
  </property>

  <!-- 向量化适配器的使用模式 -->
  <property>
    <name>hive.vectorized.adaptor.usage.mode</name>
    <value>chosen</value>
  </property>

  <!-- 排除的向量化输入格式列表 -->
  <property>
    <name>hive.vectorized.input.format.excludes</name>
    <value>org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat</value>
  </property>

  <!-- 是否合并Map输出的小文件 -->
  <property>
    <name>hive.merge.mapfiles</name>
    <value>true</value>
  </property>

  <!-- 是否合并MapReduce输出的小文件 -->
  <property>
    <name>hive.merge.mapredfiles</name>
    <value>false</value>
  </property>

  <!-- 是否启用CBO优化 -->
  <property>
    <name>hive.cbo.enable</name>
    <value>false</value>
  </property>

  <!-- Fetch任务转换级别 -->
  <property>
    <name>hive.fetch.task.conversion</name>
    <value>minimal</value>
  </property>

  <!-- 触发Fetch任务转换的数据量阈值(以字节为单位) -->
  <property>
    <name>hive.fetch.task.conversion.threshold</name>
    <value>268435456</value>
  </property>

  <!-- Limit操作的内存使用百分比 -->
  <property>
    <name>hive.limit.pushdown.memory.usage</name>
    <value>0.1</value>
  </property>

  <!-- 是否合并Spark任务输出的小文件 -->
  <property>
    <name>hive.merge.sparkfiles</name>
    <value>true</value>
  </property>

  <!-- 合并小文件时的平均大小(以字节为单位) -->
  <property>
    <name>hive.merge.smallfiles.avgsize</name>
    <value>16777216</value>
  </property>

  <!-- 每个任务合并的数据量(以字节为单位) -->
  <property>
    <name>hive.merge.size.per.task</name>
    <value>268435456</value>
  </property>

  <!-- 是否启用重复消除优化 -->
  <property>
    <name>hive.optimize.reducededuplication</name>
    <value>true</value>
  </property>

  <!-- 最小Reduce任务数以启用重复消除优化 -->
  <property>
    <name>hive.optimize.reducededuplication.min.reducer</name>
    <value>4</value>
  </property>

  <!-- 是否启用Map端聚合 -->
  <property>
    <name>hive.map.aggr</name>
    <value>true</value>
  </property>

  <!-- Map端聚合的哈希表内存比例 -->
  <property>
    <name>hive.map.aggr.hash.percentmemory</name>
    <value>0.5</value>
  </property>

  <!-- 是否优化动态分区排序 -->
  <property>
    <name>hive.optimize.sort.dynamic.partition</name>
    <value>false</value>
  </property>

  <!-- Hive执行引擎类型(mr、tez、spark) -->
  <property>
    <name>hive.execution.engine</name>
    <value>mr</value>
  </property>

  <!-- Spark Executor的内存大小 -->
  <property>
    <name>spark.executor.memory</name>
    <value>2572261785b</value>
  </property>

  <!-- Spark Driver的内存大小 -->
  <property>
    <name>spark.driver.memory</name>
    <value>3865470566b</value>
  </property>

  <!-- 每个Spark Executor的核心数 -->
  <property>
    <name>spark.executor.cores</name>
    <value>4</value>
  </property>

  <!-- Spark Driver的内存Overhead -->
  <property>
    <name>spark.yarn.driver.memoryOverhead</name>
    <value>409m</value>
  </property>

  <!-- Spark Executor的内存Overhead -->
  <property>
    <name>spark.yarn.executor.memoryOverhead</name>
    <value>432m</value>
  </property>

  <!-- 是否启用动态资源分配 -->
  <property>
    <name>spark.dynamicAllocation.enabled</name>
    <value>true</value>
  </property>

  <!-- 动态资源分配的初始Executor数量 -->
  <property>
    <name>spark.dynamicAllocation.initialExecutors</name>
    <value>1</value>
  </property>

  <!-- 动态资源分配的最小Executor数量 -->
  <property>
    <name>spark.dynamicAllocation.minExecutors</name>
    <value>1</value>
  </property>

  <!-- 动态资源分配的最大Executor数量 -->
  <property>
    <name>spark.dynamicAllocation.maxExecutors</name>
    <value>2147483647</value>
  </property>

  <!-- 是否在Hive元数据存储中执行setugi操作 -->
  <property>
    <name>hive.metastore.execute.setugi</name>
    <value>true</value>
  </property>

  <!-- 是否支持并发操作 -->
  <property>
    <name>hive.support.concurrency</name>
    <value>true</value>
  </property>

  <!-- ZooKeeper服务器列表 -->
  <property>
    <name>hive.zookeeper.quorum</name>
    <value>myhost04,myhost03,myhost02</value>
  </property>

  <!-- ZooKeeper客户端端口号 -->
  <property>
    <name>hive.zookeeper.client.port</name>
    <value>2181</value>
  </property>

  <!-- Hive使用的ZooKeeper命名空间 -->
  <property>
    <name>hive.zookeeper.namespace</name>
    <value>hive_zookeeper_namespace_hive</value>
  </property>

  <!-- 集群委派令牌存储类 -->
  <property>
    <name>hive.cluster.delegation.token.store.class</name>
    <value>org.apache.hadoop.hive.thrift.MemoryTokenStore</value>
  </property>

  <!-- 是否启用Hive Server2用户代理模式 -->
  <property>
    <name>hive.server2.enable.doAs</name>
    <value>true</value>
  </property>

  <!-- 是否启用Hive元数据存储的SASL认证 -->
  <property>
    <name>hive.metastore.sasl.enabled</name>
    <value>true</value>
  </property>

  <!-- Hive Server2的认证方式 -->
  <property>
    <name>hive.server2.authentication</name>
    <value>kerberos</value>
  </property>

  <!-- Hive元数据存储的Kerberos主体名称 -->
  <property>
    <name>hive.metastore.kerberos.principal</name>
    <value>hive/_HOST@MY.COM</value>
  </property>

  <!-- Hive Server2的Kerberos主体名称 -->
  <property>
    <name>hive.server2.authentication.kerberos.principal</name>
    <value>hive/_HOST@MY.COM</value>
  </property>

  <!-- 是否启用Spark Shuffle服务 -->
  <property>
    <name>spark.shuffle.service.enabled</name>
    <value>true</value>
  </property>

  <!-- 是否在没有Limit操作的OrderBy语句中执行严格检查 -->
  <property>
    <name>hive.strict.checks.orderby.no.limit</name>
    <value>false</value>
  </property>

  <!-- 是否在没有分区过滤条件的查询中执行严格检查 -->
  <property>
    <name>hive.strict.checks.no.partition.filter</name>
    <value>false</value>
  </property>

  <!-- 是否执行严格的类型安全性检查 -->
  <property>
    <name>hive.strict.checks.type.safety</name>
    <value>true</value>
  </property>

  <!-- 是否执行严格的笛卡尔积检查 -->
  <property>
    <name>hive.strict.checks.cartesian.product</name>
    <value>false</value>
  </property>

  <!-- 是否执行严格的桶排序检查 -->
  <property>
    <name>hive.strict.checks.bucketing</name>
    <value>true</value>
  </property>
</configuration>

具体用途:

  • hive.metastore.uris:Hive元数据存储的URI。
  • hive.metastore.client.socket.timeout:Hive元数据客户端套接字超时时间。
  • hive.metastore.warehouse.dir:Hive数据仓库目录。
  • hive.warehouse.subdir.inherit.perms:子目录是否继承权限。
  • hive.auto.convert.join:自动转换连接类型的Join操作。
  • hive.auto.convert.join.noconditionaltask.size:自动转换连接类型的Join操作时条件不满足的最大数据量。
  • hive.optimize.bucketmapjoin.sortedmerge:是否优化Bucket Map Join的Sorted Merge。
  • hive.smbjoin.cache.rows:SMB Join操作缓存的行数。
  • hive.server2.logging.operation.enabled:是否启用Hive Server2日志记录操作。
  • hive.server2.logging.operation.log.location:Hive Server2操作日志的存储位置。
  • mapred.reduce.tasks:MapReduce作业的Reduce任务数。
  • hive.exec.reducers.bytes.per.reducer:每个Reduce任务的数据量。
  • hive.exec.copyfile.maxsize:最大允许复制文件的大小。
  • hive.exec.reducers.max:同时运行的最大Reduce任务数。
  • hive.vectorized.groupby.checkinterval:Vectorized Group By操作的检查间隔。
  • hive.vectorized.groupby.flush.percent:Vectorized Group By操作的Flush比例。
  • hive.compute.query.using.stats:是否使用统计信息来优化查询计划。
  • hive.vectorized.execution.enabled:是否启用向量化执行引擎。
  • hive.vectorized.execution.reduce.enabled:是否在Reduce阶段启用向量化执行。
  • hive.vectorized.use.vectorized.input.format:是否使用向量化输入格式。
  • hive.vectorized.use.checked.expressions:是否使用检查表达式的向量化执行。
  • hive.vectorized.use.vector.serde.deserialize:是否使用向量化序列化和反序列化。
  • hive.vectorized.adaptor.usage.mode:向量化适配器的使用模式。
  • hive.vectorized.input.format.excludes:排除的向量化输入格式列表。
  • hive.merge.mapfiles:是否合并Map输出的小文件。
  • hive.merge.mapredfiles:是否合并MapReduce输出的小文件。
  • hive.cbo.enable:是否启用CBO优化。
  • hive.fetch.task.conversion:Fetch任务转换级别。
  • hive.fetch.task.conversion.threshold:触发Fetch任务转换的数据量阈值。
  • hive.limit.pushdown.memory.usage:Limit操作的内存使用百分比。
  • hive.merge.sparkfiles:是否合并Spark任务输出的小文件。
  • hive.merge.smallfiles.avgsize:合并小文件时的平均大小。
  • hive.merge.size.per.task:每个任务合并的数据量。
  • hive.optimize.reducededuplication:是否启用重复消除优化。
  • hive.optimize.reducededuplication.min.reducer:最小Reduce任务数以启用重复消除优化。
  • hive.map.aggr:是否启用Map端聚合。
  • hive.map.aggr.hash.percentmemory:Map端聚合的哈希表内存比例。
  • hive.optimize.sort.dynamic.partition:是否优化动态分区排序。
  • hive.execution.engine:Hive执行引擎类型。
  • spark.executor.memory:Spark Executor的内存大小。
  • spark.driver.memory:Spark Driver的内存大小。
  • spark.executor.cores:每个Spark Executor的核心数。
  • spark.yarn.driver.memoryOverhead:Spark Driver的内存Overhead。
  • spark.yarn.executor.memoryOverhead:Spark Executor的内存Overhead。
  • spark.dynamicAllocation.enabled:是否启用动态资源分配。
  • spark.dynamicAllocation.initialExecutors:动态资源分配的初始Executor数量。
  • spark.dynamicAllocation.minExecutors:动态资源分配的最小Executor数量。
  • spark.dynamicAllocation.maxExecutors:动态资源分配的最大Executor数量。
  • hive.metastore.execute.setugi:是否在Hive元数据存储中执行setugi操作。
  • hive.support.concurrency:是否支持并发操作。
  • hive.zookeeper.quorum:ZooKeeper服务器列表。
  • hive.zookeeper.client.port:ZooKeeper客户端端口号。
  • hive.zookeeper.namespace:Hive使用的ZooKeeper命名空间。
  • hive.cluster.delegation.token.store.class:集群委派令牌存储类。
  • hive.server2.enable.doAs:是否启用Hive Server2用户代理模式。
  • hive.metastore.sasl.enabled:是否启用Hive元数据存储的SASL认证。
  • hive.server2.authentication:Hive Server2的认证方式。
  • hive.metastore.kerberos.principal:Hive元数据存储的Kerberos主体名称。
  • hive.server2.authentication.kerberos.principal:Hive Server2的Kerberos主体名称。
  • spark.shuffle.service.enabled:是否启用Spark Shuffle服务。
  • hive.strict.checks.orderby.no.limit:是否在没有Limit操作的OrderBy语句中执行严格检查。
  • hive.strict.checks.no.partition.filter:是否在没有分区过滤条件的查询中执行严格检查。
  • hive.strict.checks.type.safety:是否执行严格的类型安全性检查。
  • hive.strict.checks.cartesian.product:是否执行严格的笛卡尔积检查。
  • hive.strict.checks.bucketing:是否执行严格的桶排序检查。

这些参数的具体值可以根据实际需求进行修改和配置,以满足您的Hive和Spark环境的要求。

### 解决 IntelliJ IDEA 中 `@Autowired` 注解导致的红色波浪线错误 在使用 Spring 框架时,如果遇到 `@Autowired` 注解下的依赖注入对象显示为红色波浪线错误或者黄色警告的情况,通常是由以下几个原因引起的: #### 1. **Spring 插件未启用** 如果 Spring 支持插件未被激活,则可能导致 IDE 无法识别 `@Autowired` 或其他 Spring 特定的功能。可以通过以下方式解决问题: - 打开设置菜单:`File -> Settings -> Plugins`。 - 确认已安装并启用了名为 “Spring Framework Support” 的官方插件[^1]。 #### 2. **项目配置文件缺失或不正确** Spring 需要通过 XML 文件、Java Config 类或其他形式来定义 Bean 定义。如果没有正确加载这些配置文件,可能会导致 `@Autowired` 报错。 - 确保项目的 `applicationContext.xml` 或者基于 Java 的配置类(带有 `@Configuration` 和 `@Bean` 注解)已被正确定义和引入。 - 对于 Spring Boot 项目,确认是否存在 `spring.factories` 文件以及是否包含了必要的组件扫描路径[^3]。 #### 3. **模块依赖关系问题** 当前模块可能缺少对 Spring Core 或 Context 组件库的有效引用。这可能是由于 Maven/Gradle 构建工具中的依赖项声明不足造成的。 - 检查 `pom.xml` (Maven) 或 `build.gradle` (Gradle),确保包含如下核心依赖之一: ```xml <!-- For Maven --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> ``` ```gradle // For Gradle implementation 'org.springframework:spring-context:${springVersion}' ``` - 更新项目依赖树以应用更改:右键点击项目根目录 -> `Maven -> Reload Project` 或运行命令 `./gradlew build --refresh-dependencies`。 #### 4. **IDE 缓存损坏** Intellij IDEA 的缓存机制有时会因各种因素而失效,从而引发误报错误。清除缓存可以有效缓解此类情况。 - 使用快捷组合键 `Ctrl + Alt + Shift + S` 进入项目结构对话框;也可以尝试执行操作序列:`File -> Invalidate Caches / Restart... -> Invalidate and Restart`. #### 5. **启动异常影响正常解析** 若之前存在类似 `com.intellij.diagnostic.PluginException` 的严重初始化失败日志记录,则表明某些关键服务未能成功加载,进而干扰到后续功能表现[^2]。建议重新下载最新稳定版本的 IDEA 并按照标准流程完成初次部署工作。 ```java // 示例代码片段展示如何正确运用 @Autowired 注解实现自动装配 @Service public class StudentService { private final Repository repository; public StudentService(@Qualifier("specificRepository") Repository repo){ this.repository = repo; } } @Component class SpecificComponent{ @Autowired private transient StudentService studentService; // 此处应无任何编译期告警现象发生 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BigDataMLApplication

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值