批量自动归集 Posted 2023-04-11 凡梦_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了批量自动归集相关的知识,希望对你有一定的参考价值。
在以太坊、BSC、Heco、马蹄、OK、夸克等链上撸羊毛、打金的时候需要对多个钱包的资产进行归集管理。有时候也需要打开电脑进行自动归集。
软件实现方式首先通过链查询账户余额,账户有余额,且余额大于所设置的最小转账数量,程序自动发起归集操作,从被归集钱包往归集钱包进行转账。
地址:https://www.bbctool.com
平台币查看余额方法:
//获得余额
var result = web3.Eth.GetBalance.SendRequestAsync(address);
result.Wait();
代币Token查看余额方法:
var balanceResult = voteContract.GetFunction("balanceOf").CallAsync<BigInteger>(address);
balanceResult.Wait();
平台币转账方法:
var sendTxHash = web3.Eth.TransactionManager.SendTransactionAsync(transferEntity.From, transferEntity.To, new HexBigInteger(countEth));
sendTxHash.Wait();
代币Token转账方法:
1
2
3
var
sendResult = voteContract.GetFunction(
"transferFrom"
).SendTransactionAsync(tInput1, accountEnt.Address, toAccountEnt.Address, countEth);
sendResult.Wait();
markdown Hive技巧,案例归集
# Hive 技巧、案例 归集
## 创建的文件数超过hive的限制
hive使用`hive.exec.max.created.files`参数来控制一个SQL允许的文件创建数量,默认是100000。
比如有这么一条sql
```
insert overwrite into table new_tmp partition(ds)
select * from tmp
```
其中,`tmp`表有500g(为方便计算,1g=1000m),根据`ds`来可有50个分区,意味着一个mapper就会分别往50个分区文件夹下生成一个文件,
当mapper的数量超过2000个,就会使SQL执行失败。最简单的方式就是加大`hive.exec.max.created.files`限制,
不过需要考量下单个文件的大小。本例中假如刚好100000个文件,那么500g/100000的话,每个文件才5m,
这就浪费了许多的空间。
那么采取的优化办法就是将相同分区的数据放到同一个reduce中执行,50个分区就产生50个reduce产生50个文件
```
insert overwrite into table new_tmp partition(ds)
select * from tmp
distribute by ds
```
这样就能极大提升空间利用率,缺点就是:1.增加了reduce环节,提高的执行时间。
2.不同分区的数据可能会比较不均衡,加长单个reduce的执行时间,甚至让内存溢出。
权衡空间和时间,可以进一步优化如下:
```
set hive.exec.reducers.bytes.per.reducer=5000000000;
insert overwrite into table new_tmp partition(ds)
select * from tmp
distribute by rand()
```
控制每个reduce的处理数据大小为5g,那么将产生100个reduce,产生100*50个文件
## 利用Hive Streaming对数据进行转换
`Hive Streaming API`会为外部进程开启一个IO管道,然后数据会被传给外部进程,
这个进程会从标准输入中读取数据,然后通过标准输出来写结果数据,最后返回到`Streaming API Job`
注意:Streaming的执行效率通常会比对应的编写`UDF`或改写`InputFormat`对象的方式要低,但胜在方便,可权衡取舍
以上是关于批量自动归集的主要内容,如果未能解决你的问题,请参考以下文章
以太坊代币,USDT归集流程图
EOS区块链钱包开发教程
EOS区块链钱包开发教程
链上资产归集科普:深度还原MXC抹茶DOGGY资产归集被误解全过程
markdown Hive技巧,案例归集
发文归集整理