小编kic*_*hik的帖子

从reducer访问映射器的计数器

我需要从我的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.我做错了什么或这是不可能的?

java hadoop

12
推荐指数
3
解决办法
9545
查看次数

SNS主题不发布到SQS

我正在尝试使用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 - 它工作正常.任何想法为什么它不会发送到队列?

amazon-sqs amazon-web-services amazon-sns

11
推荐指数
6
解决办法
8244
查看次数

Docker PostgreSQL - /docker-entrypoint-initdb.d中的脚本无法运行

所以,我有一个具有这种结构的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)

postgresql docker docker-compose

11
推荐指数
1
解决办法
1万
查看次数

Java中的子字符串 - 长度最大为一个值

我正在尝试创建一个子字符串,这个子字符串最多可以包含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)

java string substring

9
推荐指数
3
解决办法
5476
查看次数

如何实现django otp?

我在看django-otp模块,想在我的项目中实现它.但我面临几个问题.

1)根据文档(它们在文档已经给出的方法)中,有三个级别的身份验证的:Anonymous,AuthenticatedAuthenticated + 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)

python authentication django

8
推荐指数
1
解决办法
2966
查看次数

如何创建任何 AWS Lambda Python 层?(XGBoost 的使用示例)

我在为 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

7
推荐指数
1
解决办法
987
查看次数

SQS 消息始终处于飞行状态

我有以下代码从 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调用中返回。

有任何想法吗?

java amazon-sqs

5
推荐指数
1
解决办法
9967
查看次数

带有Retrofit的App Engine端点

想要使用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调用来访问它们.

这意味着现在我需要关心:

  • 我如何将我的对象传递给Retrofit以及如何在后端检索它们
  • 我如何在HTTPS调用中转换Retrofit HTTP调用以进行安全连接
  • 我如何在Client和GAE后端之间实现和管理Auth2和令牌以建立安全身份验证.

这是我从搜索和下面的答案中理解的.Thks

google-app-engine android retrofit

5
推荐指数
1
解决办法
999
查看次数

Cloudformation部署aws sdk for javascript

看看用于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使用SDKNOTCLI执行?

node.js aws-cloudformation aws-sdk aws-sdk-js

5
推荐指数
1
解决办法
914
查看次数

FindFirstFile LPCSTR

你好,我的代码问题在这里.

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然后它只是很多奇怪的人物,我不知道为什么或这是一个更好的方法来做到这一点?

c++ windows string winapi lpcstr

3
推荐指数
1
解决办法
3347
查看次数