Hive手册入门篇

Hive操作基础(入门篇) 优点:可以单独使用外部库(mysql),可以共享元数据,本地可以连接metastore服务也可以连接hiveserver2服务,增加了扩展性(其他依赖hive的软件都可以通过Metastore访问hive)没有专门的临时数据库(ODS),这意味着数据会立即加载到单一的集中存储库中,数据在数据仓库系统中直接进行转换,然后进行分析。数据仓库层(DW):也称为细节层,DW层的数据应该是一致的、准确的、干净的数据,即对源系统数据进行了清洗(去除了杂质)后的数据。根据报表、专题分析需求而计算生成的数据。 阅读详情

基于hadoop的数仓工具,将结构画的数据映射为一张表,并提供hsql的查询功能,本质是将sql语句转化为MapReduce的任务进行执行,底层由HDFS来提供数据支持。存储用HDFS,计算用MapReduce

数据类型

数据类型备注
tinyint1字节有符号整数,范围-128~127
samllint2字节有符号整数,范围-32768~32767
int4字节有符号整数,范围-2^31 ~2^31-1
bigint8字节有符号整数,范围-2^63 ~2^63-1
float4字节单精度浮点数
double8字节双精度浮点数
decimal任意精度的带符号小数
booleantrue/false
string变长字符串
varchar变长字符串
char定长字符串
date日期
timestamp时间戳
binary字节数组,存储变长的二进制数据

集合类型

数据类型备注
struct结构体
map键值对,key和value都是string类型
array组,可以存多个数据,用逗号隔开

示例:

create table test(
man struct<name:string,agt:int> comment "个人信息"
,marry_info map<string,string> comment "婚姻信息"
,hobby array<string> comment "爱好"
);
-- 插入数据
insert into test
select name_struct("name","小明","age",12)
,str_to_map("小明:单身,时长:3年")
,array("打球,游泳,滑雪")

--查询数据
select 
a.man.name
,a.marry_info["小明"]
,a.hobby[0]
from
test a 

建表

create table test(
id int comment "序号"
,start_time timestamp comment "开始时间"
,name string comment "姓名"
)
comment "小小牛学院信息"

插入

-- 部分字段插入
insert into test(id,name)
select 33882,"刚子"

-- 全字段插入
insert into test
select 33882,current_timestamp(),"刚子"

查询

select * from test a where a.id=33882

删除

-- 覆盖重写
insert overwrite table test
select * from test a where a.id=33

更新

略
Hive UDF 开发手册 文档目的 笔者在工作中有接触到 Hive UDF 的开发任务,大部分 UDF 开发并不困难,困难的往往是: 不清楚 UDF 代码的编写逻辑(UDF、UDTF、UDAF) 不清楚如何传入特定类型的参数 不清楚如何返回特定类型的结果 特此整理一番,供自己日后工作参考之用。同时也分享给大家,可以指导初学者开发自定义UDF,也可以作为随用随查的参考手册: UDF开发手册 - UDF UDF开发手册 - UDTF UDF开发手册 - UDAF UDF概念 Hive 一共有三种 UDF: UDF UDTF U 阅读详情

相关推荐

hive+hbase学习手册

hive学习手册 一、hive入门手册 1.什么是数据仓库 1.1数据仓库概念 对历史数据变化的统计,从而支撑企业的决策。比如:某个商品最近一个月的销量,预判下个月应该销售多少,从而补充多少货源。 1.2传统数据仓库面临的挑战 (1)无法满足快速增长的海量数据存储需求 (2)无法有效处理不同类型的数据 (3)计算和处理能力不足 1.3 Hive介绍 Hbase支持快速的交互式的大数据应用 ...

尬聊码农 1314

hive学习推荐书籍+官方网址

参考书籍:《Hive编程指南》 Hive--官方参考文档: 1.用户手册 https://cwiki.apache.org/confluence/display/Hive/Home#Home-UserDocumentation 2.管理员手册 https://cwiki.apache.org/confluence/display/Hive/Home#Home-AdministrationDocum...

SunWuKong_Hadoop的博客 9066

Hive零基础从入门到实战 入门篇(一)环境搭建

目录 前言 1.Hive是什么 2.Hive学习环境搭建 前言 作为一个数据分析师,操作Hive提取数据已经成为了一个必备技能,但对数据分析师来说,查询才是做的最多的操作,毕竟使用工具是为了完成分析。所以我认为数据分析师是不需要掌握Hive具体的底层架构、安装运维、甚至是运行原理等知识的,毕竟我们不是运维也不是大数据开发工程师,实际工作中也确实用不到这些知识,所以我总结的知识点主要...

风影楼的博客 1万+

大数据入门书籍推荐以及Hive学习资料

一位资深的大数据工程师推荐的,适合想要自学大数据的同学们 大数据入门书籍推荐: 1.《大数据日知录:架构与算法》 作者: 张俊林,出版社:电子工业出版社 基本涵盖大数据相关技术架构和算法,只是出版时间略久,新书不好买。不介意的同学可以去淘淘二手书 2.《大数据技术原理与应用:概念、存储、处理、分析与应用》(第2版) 作者: 林子雨 出版社:人民邮电出版社 定位是作为学校相应课程的指导教材,并有配套PPT可下载 http://dblab.xmu.edu.cn/post/5633/ ...

weixin_46890865的博客 2613

Hive安装与配置手册大全

Hive是一个开源的数据仓库工具,用于处理大规模数据集。它是建立在Hadoop上的,并提供了类SQL查询语言HiveQL。Hive使得数据分析师能够在不需要深入了解底层MapReduce编程的情况下,对存储在Hadoop文件系统中的数据进行查询和分析。Hive的架构主要包括以下几个核心组件:用户接口(CLI、JDBC/ODBC、WebUI)、元数据存储(Metastore)、编译器(包括解析器、优化器和生成器)、驱动程序和执行引擎。

weixin_36474966的博客 391

LEF文件介绍及其生成

介绍LEF文件及其生成方法

weixin_43249158的博客 3万+

《hive编程指南》学习文档(一)

第一章 基础知识Hive定义1.hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。2.Hive是建立在 Hadoop 上的数据仓库基础构架

zisheng_wang_DATA的博客 2003

LangChain开发避坑指南:为什么Pylance总提示‘无法解析导入‘?实测7种修复方案

本文深入解析了在VS Code中使用LangChain开发时,Pylance频繁提示‘无法解析导入’的根本原因——Python解释器与语言服务器的环境路径不一致。文章提供了从基础排查到深度配置的7种实测修复方案,包括切换解释器、配置extraPaths、使用pyrightconfig.json等,旨在帮助开发者彻底解决此问题,提升AI应用开发效率。

weixin_28826521的博客 444

大数据开发-hive(入门篇)

大数据分析利器之hive 一、环境准备 安装好对应版本的hadoop集群 安装mysql服务 二、知识要点 1. Hive是什么(40分钟) 1.1 hive的概念 Hive:由Facebook开源,用于解决海量结构化日志的数据统计。 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。 本质是:将Hive SQL转化成MapReduce程序 1.2 Hive与数据库的区别 Hive 具有 SQL 数据库的外表,但应用场景完全不同。 H

大锤 1万+

LeGO-LOAM相对LOAM的改进---地面分离的方法-算法原理+代码讲解

实际上此种地⾯分离算法有⼀些简单,我们可以结合激光雷达安装⾼度等其他先验信息进⾏优化,避免将桌子这些当作地面点。LeGO-LOAM中前端改进中很重要的⼀点就是充分利⽤了地⾯点,那⾸先⾃然是提取对地⾯点的提取。理想情况下, 应该接近0,考虑到⼀⽅⾯激光雷达安装也⽆法做到绝对⽔平,另⼀⽅⾯,地⾯也不是绝。对⽔平,因此,这个⾓度会略微⼤于0,考虑到作者实际在草坪之类的场景下运动,因此这个值被设置成。如上图,相邻的两个扫描线束的同⼀列打在地⾯上如AB点所⽰,他们的垂直⾼度差。,计算垂直⾼度差和⽔平⾼度差的⾓度。..

zysss_的博客 775

中科蓝讯蓝牙耳机SDK实战:从目录解析到消息处理框架

本文深入解析中科蓝讯蓝牙耳机SDK的目录结构与消息处理框架,提供从硬件驱动到蓝牙功能定制的实战指南。重点剖析SDK核心模块如消息队列机制、按键事件处理及电量报告优化,并分享二次开发中的调试技巧与避坑经验,助力开发者高效完成TWS耳机功能定制。

weixin_30335575的博客 387

Hive手册

Hive由Facebook实现并开源,基于Hadoop的一个数据仓库工具,可以将结构化的数据映射为一张数据库表,并提供**HQL(Hive SQL)**查询功能,底层数据是存储在HDFS上。Hive的本质是将SQL语句转换为 MapReduce任务运行,使不熟悉MapReduce的用户很方便地利用HQL处理和计算HDFS上的结构化的数据,适用于离线的批量数据计算。

爱是与世界平行 4594

PPO实战:如何用强化学习让小车爬上MountainCarContinuous-v0山顶(附完整代码)

本文提供了使用PPO算法解决MountainCarContinuous-v0环境的完整实战教程。针对该环境的连续动作空间和稀疏奖励挑战,文章详细解析了PPO智能体的网络架构、状态归一化、GAE优势估计等核心实现,并附带了可直接运行的PyTorch代码。同时分享了关键的调参技巧和实战避坑指南,帮助读者高效训练智能体完成小车爬坡任务。

linux的博客 968

Hive运维手册

进入Hadoop主节点,以下操作在主节点上执行。

2201_76110643的博客 1644

PCL 贪婪投影三角剖分算法【2025最新版】

本博客在学习PCL中的贪婪投影三角算法的基础上,实现了使用彩色点云重建彩色模型的应用案例。博客长期更新,最近一次更新时间为:2025年7月6日。

点云侠的博客 37万+

48、住宅抵押贷款支持证券的定价、风险评估与结构化设计

本文深入探讨了住宅抵押贷款支持证券(RMBS)的定价、风险评估与结构化设计。内容涵盖提高定价准确性的方差缩减方法,如准蒙特卡罗序列的应用;分析RMBS面临的利率风险、信用风险和模型风险,并提出相应的度量与应对策略;介绍利用动态规划优化CMO分层结构以最大化发行利润的方法。同时总结了RMBS的基本类型、定价流程及市场发展趋势,为投资者和发行人提供全面的决策支持。

quiet的专栏 154

Hive操作命令上手手册

Hive操作命令上手手册,帮助新上手Hive的程序快速熟悉Hive,尽快开始数据操作分析。

flash_love的博客 1503

爬虫Incapsula reese84加密案例:Etihad航空

声明:该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关。

老衲爱洗头的博客 2429

Hive用户手册中文版:掌握Hive数据库操作的必备指南

Hive用户手册中文版:掌握Hive数据库操作的必备指南 【下载地址】Hive用户手册中文版 Hive用户手册中文版为您提供了一本快速上手Hive数据库的实用指南。手册详细介绍了Hive的基本概念、安装配置、核心组件、数据类型、数据操作及查询优化等内容,帮助您迅速掌握Hive的操作技巧。内容丰富,覆盖全面,提供大量实例便...

gitblog_06784的博客 503

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Hive用户手册中文版

Hive用户手册中文版 【下载地址】Hive用户手册中文版 Hive用户手册中文版为您提供了一本快速上手Hive数据库的实用指南。手册详细介绍了Hive的基本概念、安装配置、核心组件、数据类型、数据操作及查询优化等内容,帮助您迅速掌握Hive的操作技巧。内容丰富,覆盖全面,提供大量实例便于动手实践,结构清晰易于查找与学习...

gitblog_06766的博客 380

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

hive hql文档_30分钟入门 Hive SQL(HQL 入门篇)

Hive SQL 几乎是每一位互联网分析师的必备技能,相信每一位面试过大厂的童鞋都有被面试官问到 Hive 优化问题的经历。所以掌握扎实的 HQL 基础尤为重要,既能帮分析师在日常工作中“如鱼得水”提高效率,也能在跳槽时获得一份更好的工作 offer。本篇为 Hive 入门篇,主要为 Hive SQL 基础语法介绍,文章争取做到言简意赅,让大家 30 分钟入门 HQL。文中视角多处 HQL 对比 ...

weixin_39983051的博客 181

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Hive 口袋手册

2019-04-01 关键字:Hive学习总结、Hive基础 、Hive进阶 、Hive调优 、Hive入门手册、Hive PDF下载 本篇文章系本人就目前所掌握的知识对Apache Hive的各种零碎知识点汇总而成的一篇小册子,不保证文章的绝对、完全正确性。 前段时间在整理我的笔记时,发现自己之前在学习Hive的过程中做了不少笔记。但是这...

anxian8397的博客 217

Hive官方使用手册——目录

本文为自己翻译的译文,原文地址:https://cwiki.apache.org/confluence/display/Hive/LanguageManualHive官方使用手册——目录这是Hive的语言手册。如果需要Hive的其它文档,请点击首页查看。命令行和CLIs命令行旧的Hive CLI新Hive CLI(Beeline CLI)变量替换HCatalog CLI文件存储格式Avro Fil...

三米学习笔记杂货铺 7866

Hive官方使用手册——Hive CLI

本文为自己翻译的译文,原文地址:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Cli#LanguageManualCli-DeprecationinfavorofBeelineCLIHive官方使用手册——Hive CLI为了支持Beeline CLI弃用当前的方式HiveServer2 拥有自己的CLI叫Beeli...

三米学习笔记杂货铺 3785

Hive安装手册

一、安装准备 1、下载hive-0.5.0-bin版本:http://apache.etoak.com/hadoop/hive/hive-0.5.0/ 2、JDK版本:jdk-6u20-linux-i586.bin 3、操作系统:Linux s132 2.6.9-78.8AXS2smp #1 SMP Tue Dec 16 02:42:55 EST 2008 x86_64 x86_64 x86_64 GNU/Linux 4、默认前提是安装完hadoop 0.20.2版本:

dajuezhao的专栏 2364
上一篇: Hadoop单机 阿里云ecs服务器部署
下一篇: 入门篇2-Hive常用文件格式、压缩方式、分割符
Aronup
博客等级 码龄7年 75粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值