我需要从我的reducer中的mapper访问计数器.这可能吗?如果是这样怎么办?
举个例子:我的映射器是:
public class CounterMapper extends Mapper<Text,Text,Text,Text> {
static enum TestCounters { TEST }
@Override
protected void map(Text key, Text value, Context context)
throws IOException, InterruptedException {
context.getCounter(TestCounters.TEST).increment(1);
context.write(key, value);
}
}
Run Code Online (Sandbox Code Playgroud)
我的减速机是
public class CounterReducer extends Reducer<Text,Text,Text,LongWritable> {
@Override
protected void reduce(Text key, Iterable<Text> values, Context context)
throws IOException, InterruptedException {
Counter counter = context.getCounter(CounterMapper.TestCounters.TEST);
long counterValue = counter.getValue();
context.write(key, new LongWritable(counterValue));
}
}
Run Code Online (Sandbox Code Playgroud)
counterValue总是0.我做错了什么或这是不可能的?
我正在尝试使用SNS和SQS对分布式应用程序进行原型设计.我有这个主题:
arn:aws:sns:us-east-1:574008783416:us-east-1-live-auction
和这个队列:
arn:aws:sqs:us-east-1:574008783416:queue4
我使用JS Scratchpad创建了队列.我使用控制台添加了订阅.我使用暂存器将AddPermission添加到队列中.队列策略现在是:
{
"Version":"2008-10-17",
"Id":"arn:aws:sqs:us-east-1:574008783416:queue4/SQSDefaultPolicy",
"Statement":[
{
"Sid":"RootPerms",
"Effect":"Allow",
"Principal":{
"AWS":"574008783416"
},
"Action":"SQS:*",
"Resource":"arn:aws:sqs:us-east-1:574008783416:queue4"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我有一个关于同一主题的电子邮件订阅,电子邮件很好地到达,但邮件从未到达队列.我已经尝试使用Scratchpad将SendMessage直接发送到队列 - 而不是通过SNS - 它工作正常.任何想法为什么它不会发送到队列?
所以,我有一个具有这种结构的docker-compose项目:
DockerDev
- docker-compose.yaml
- d-php
- Dockerfile
- scripts-apache
- d-postgresql
- Dockerfile
- scripts
- dev_data_setup.sql
- logs
- pgdata
- www
Run Code Online (Sandbox Code Playgroud)
PHP,Redis,ElasticSearch都行.但Postgresql没有运行dev_data_setup.sql,我找到了/dockes-entrypoint-initdb.d的任何不同解决方案(volume,ADD,COPY等).我试图运行和sh脚本,没有.
你能看到这个docker-compose和Dockerfile并帮助我吗?谢谢
Dockerfile:
FROM postgres:latest
ADD ./scripts/dev_data_setup.sql /docker-entrypoint-initdb.d
Run Code Online (Sandbox Code Playgroud)
泊坞窗,compose.yaml:
version: '2'
services:
php:
build: ./d-php/
hostname: www.domain.com
ports:
- "80:80"
volumes:
- ./www:/var/www/html
- ./d-php/scripts-apache2/apache2.conf:/etc/apache2/apache2.conf
- ./d-php/scripts-apache2/web.conf:/etc/apache2/sites-enabled/web.conf
- ./d-php/scripts-apache2/webservice.conf:/etc/apache2/sites-enabled/webservice.conf
- ./logs:/var/log/apache2
links:
- db
- redis
- elasticsearch
db:
build: ./d-postgresql/
volumes:
- ./pgdata:/pgdata
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- PGDATA=/pgdata
redis:
image: redis:latest
elasticsearch:
image: …
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个子字符串,这个子字符串最多可以包含6个字母的字母,但是当我找到一个少于6个字母的姓氏时,我在这里似乎会抛出错误,我一直在寻找解决方案的时间没有成功:/
id = firstName.substring (0,1).toLowerCase() + secondName.substring (0,6).toLowerCase();
System.out.print ("Here is your ID number: " + id);
Run Code Online (Sandbox Code Playgroud)
就是这样.substring(0,6)
.我需要它最多 6个字母而不是6个字母.
错误:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 6
at java.lang.String.substring(Unknown Source)
at Test.main(Test.java:27)
Run Code Online (Sandbox Code Playgroud) 我在看django-otp模块,想在我的项目中实现它.但我面临几个问题.
1)根据文档(它们在文档已经给出的方法)中,有三个级别的身份验证的:Anonymous
,Authenticated
和Authenticated + Verified
.如果用户已经通过django的身份验证系统进行了身份验证,那么他将被要求进行otp验证(双向身份验证).
现在我想跳过它并通过otp验证/验证用户.而不是登录提示用户将输入电话号码并将收到otp进行验证.(我想绕过django的身份验证).
2)我还想在选定的页面上使用otp_required.即我将在我的网站上拥有匿名用户和经过验证的用户.
3)我找不到任何关于实施的例子.
我的问题是如何在我当前的场景中实现它.
编辑:Settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'home',
'django_otp',
'django_otp.plugins.otp_totp',
'django_otp.plugins.otp_static',
]
MIDDLEWARE_CLASSES = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django_otp.middleware.OTPMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
Run Code Online (Sandbox Code Playgroud) 我在为 xgboost 库创建 lambda 层时遇到问题。我在跑:
我从这里 ( https://github.com/alexeybutyrev/aws_lambda_xgboost )抓取 xgboost 的 zip 和它的依赖项并将其加载到一个层中。当我尝试测试我的 lambda 时,我收到此错误:
Unable to import module 'lambda_function': No module named 'xgboost.core'
看起来__init__.py
正在尝试通过引用 core.pyfrom .core import <stuff>
有没有人在使用 AWS Lambda 之前遇到过这个错误?
python package-management amazon-web-services aws-lambda xgboost
我有以下代码从 SQS 队列中检索消息。我正在使用 aAmazonSQSBufferedAsyncClient
从队列中检索消息。SingleThreadedExecutor
每 5 分钟调用一次固定延迟唤醒receiveMessage
。队列中启用长轮询
@Service
public class AmazonQueueService
implements QueueService<String> {
@Autowired
private AmazonSQSBufferedAsyncClient sqsAsyncClient;
@Value("${aws.sqs.queueUrl}")
private String queueUrl;
@Override
public List<Message<String>> receiveMessage() {
ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(queueUrl);
ReceiveMessageResult result = sqsAsyncClient.receiveMessage(receiveMessageRequest);
LOG.debug("Size=" + result.getMessages().size());
return Lists.transform(result.getMessages(), ......);
}
.....
}
Run Code Online (Sandbox Code Playgroud)
问题是当我检查 AWS 控制台时,该消息始终在传输中,但从未在应用程序中收到(大小始终打印为 0)。看起来AmazonSQSBufferedAsyncClient
正在从队列中读取消息但没有在receiveMessage
调用中返回。
有任何想法吗?
想要使用Retrofit来处理Android Client和GAE端点之间的网络请求.GAE端点为客户端/服务器端点库提供处理所有网络以及Oauth2身份验证的功能.Retrofit有助于异步调用,取消,并行调用......所以比android客户端asynctask更好.那么这个Retrofit lib可以配置Appengine GAE端点还是需要通过普通的GAE servlet?
只是为了澄清我的问题,并为任何阅读此内容的人明确答案:
我有我的应用程序:
客户端:谷歌插件为eclipse生成的云端点库
后端侧GAE:使用JPA编码的方法的不同API,例如:
@ApiMethod(name = "insertMyShareItem")
public ShareItemData insertMyShareItemData(ShareItemData shareitemdata) {
logger.log(Level.SEVERE, "insertMyShareItem");
}
Run Code Online (Sandbox Code Playgroud)
谷歌云端点的优点是端点库,易于使用Auth2并通过HTTPS自动使用安全连接
现在我想放弃Async任务以实现Retrofit或Volley.我知道我不能再使用谷歌云端点了,需要在扩展HttpServlet的方法中转换GAE后端的方法,这样我就可以通过正常设置Retrofit的URL调用来访问它们.
这意味着现在我需要关心:
这是我从搜索和下面的答案中理解的.Thks
看看用于Javascript的AWS sdk,看起来我们只能create stacks
但我正在寻找到deploy
堆栈的方式.我怎么用提供的sdk做到这一点; 这是他们目前拥有的:
cloudformation.createStack(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
Run Code Online (Sandbox Code Playgroud)
我希望这样的事情:
cloudformation.deployStack(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
Run Code Online (Sandbox Code Playgroud)
基本上,我想使用sdk而不是cli重新创建此命令:
aws cloudformation deploy --template-file /path_to_template/template.json --stack-name my-new-stack --parameter-overrides Key1=Value1 Key2=Value2 --tags Key1=Value1 Key2=Value2
Run Code Online (Sandbox Code Playgroud)
这是因为我使用Linux并且可以将它放在shell脚本中,而我使用的大多数人都使用Windows而我不想使用Windows Batch,而是使用像npm这样的跨平台解决方案aws-sdk for javascript approach
.
你将如何cloudformation.deployStack
使用SDK
和NOT
CLI执行?
你好,我的代码问题在这里.
LPCSTR mergeString(LPCSTR firstString, std::string secondString)
{
string convertedString = ConvertString(firstString);
LPCSTR mergedString;
int i = convertedString.size();
convertedString.insert(i, secondString);
mergedString = (convertedString.c_str());
return mergedString;
}
void GetFiles(LPCSTR path)
{
WIN32_FIND_DATA File_Data;
LPCSTR lPath = mergeString(path,"\\*.txt");
FindFirstFile(lPath, &File_Data);
wcout << File_Data.cFileName;
}
Run Code Online (Sandbox Code Playgroud)
你传入你想要在GetFiles(LPCSTR路径)中使用的路径然后我使用mergestring函数将路径与扩展(\*.txt)合并在一起所有工作,除非它返回LPCSTR然后它只是很多奇怪的人物,我不知道为什么或这是一个更好的方法来做到这一点?
java ×3
amazon-sqs ×2
python ×2
string ×2
amazon-sns ×1
android ×1
aws-lambda ×1
aws-sdk ×1
aws-sdk-js ×1
c++ ×1
django ×1
docker ×1
hadoop ×1
lpcstr ×1
node.js ×1
postgresql ×1
retrofit ×1
substring ×1
winapi ×1
windows ×1
xgboost ×1