我在DynamoDB中有以下记录:
{
"BusinessNo": {
"N": "12345"
},
"Metadata": {
"M": {
"MimeType": {
"S": "audio/wav"
},
"FileName": {
"S": "00032329.wav"
},
"CustomC": {
"S": "baz"
},
"CustomA": {
"S": "foo"
},
"CustomB": {
"S": "bar"
},
"Size": {
"S": "3992020323"
}
}
},
"Id": {
"S": "f0de8af3-a7f5-4d9b-ad5d-b2f150abd15e"
},
"Revision": {
"N": "2"
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我使用来自nodejs AWS SDK 的update方法提交以下内容时DynamoDB.DocumentClient(我也尝试add代替set):
{
"TableName": "Storage_FileMetadata",
"Key": {
"Id": "f0de8af3-a7f5-4d9b-ad5d-b2f150abd15e",
"BusinessNo": "12345"
},
"ExpressionAttributeNames": {
"#m": "Metadata", …Run Code Online (Sandbox Code Playgroud) 在什么情况下我会看到上述消息?我只有一次调用SQL Server,它包含在对TransactionScope的调用中.在我们的开发和QA环境中,MSDTC被关闭,呼叫成功.但是,在我们打开MSDTC的生产环境中,我们没有通过此调用.当我确定我们根本没有查看分布式事务调用时,是否会出现这种情况?
鉴于下面定义的表模式(create-table.json)我在调用后put-item使用add-event1.json后跟以下错误add-event2.json:
调用PutItem操作时发生客户端错误(ConditionalCheckFailedException):条件请求失败
为什么ConditionExpression不允许我写两个记录?(我希望在第二次手术后有2条记录)
我怀疑这是因为使用了非关键条件,但我没有在文档中看到任何表明缺乏对非关键条件的支持的内容.
创建表
$ aws dynamodb create-table --cli-input-json file://create-table.json
Run Code Online (Sandbox Code Playgroud)
创建-table.json
{
"TableName": "EVENTS_TEST",
"KeySchema": [
{ "AttributeName": "aggregateId", "KeyType": "HASH" },
{ "AttributeName": "streamRevision", "KeyType": "RANGE" }
],
"AttributeDefinitions": [
{ "AttributeName": "aggregateId", "AttributeType": "S" },
{ "AttributeName": "streamRevision", "AttributeType": "N" }
],
"ProvisionedThroughput": {
"ReadCapacityUnits": 10,
"WriteCapacityUnits": 10
}
}
Run Code Online (Sandbox Code Playgroud)
添加第一条记录
$ aws dynamodb put-item --cli-input-json file://add-event1.json
Run Code Online (Sandbox Code Playgroud)
附加event1.json
{
"TableName": "EVENTS_TEST",
"Item": {
"aggregateId": { "S": "id" …Run Code Online (Sandbox Code Playgroud) 我正在使用 Akka Streams 2.4.2 并且想知道是否有可能设置一个使用数据库表作为源的流,并且每当有记录添加到表中时,记录被物化并推送到下游?
我已经从@PH88 实施了解决方案。这是我的表定义:
case class Record(id: Int, value: String)
class Records(tag: Tag) extends Table[Record](tag, "my_stream") {
def id = column[Int]("id")
def value = column[String]("value")
def * = (id, value) <> (Record.tupled, Record.unapply)
}
Run Code Online (Sandbox Code Playgroud)
这是实现:
implicit val system = ActorSystem("Publisher")
implicit val materializer = ActorMaterializer()
val db = Database.forConfig("pg-postgres")
try{
val newRecStream = Source.unfold((0, List[Record]())) { n =>
try {
val q = for (r <- TableQuery[Records].filter(row => row.id > n._1)) yield (r)
val r = …Run Code Online (Sandbox Code Playgroud) 我试图查询以下注册表项值:
HKLM\SOFTWARE\Microsoft\MSSQLServer\Client\SharedMemoryOn HKLM\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib\ProtocolOrder
但是根据我正在运行程序的机器,查询返回null.当我在本地计算机上调试时,我检查ValueCount的值:
HKLM\SOFTWARE\Microsoft\MSSQLServer\Client HKLM\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib
计数为0,OpenSubKey返回null.
我是本地管理员组中的域管理员,并已将以下内容添加到我的app.manifest:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
Run Code Online (Sandbox Code Playgroud)
知道为什么吗?
private static void ValidateSqlClientSettings()
{
Console.WriteLine("\r\n/////////////// LOCAL SQL CLIENT PROTOCOLS ////////////////");
RegistryKey keyHKLM = Registry.LocalMachine;
///TODO: nullreferenceexception - connect to remote machine and find out why
RegistryKey sqlClientKey = keyHKLM.OpenSubKey(@"SOFTWARE\Microsoft\MSSQLServer\Client");
if (sqlClientKey == null)
{
WriteLine2Console(@"WARNING: unable to read registry key '{0}\SOFTWARE\Microsoft\MSSQLServer\Client'", ConsoleColor.Yellow);
}
var cliKeyNames = from k in sqlClientKey.GetSubKeyNames()
where k == "SuperSocketNetLib"
select k;
///TODO: find out why these values are always missing (even …Run Code Online (Sandbox Code Playgroud) 我正在使用DotNetOpenAuth v3.5.0.10357,每次用户对Facebook进行身份验证时,我都会收到不同的声称标识符.令牌看起来是加密的,因此我假设DNOA以某种方式加密令牌以及到期.谁能证实这一点?或者我使用它错了:
public ActionResult FacebookLogOn(string returnUrl)
{
IAuthorizationState authorization = m_FacebookClient.ProcessUserAuthorization();
if (authorization == null)
{
// Kick off authorization request
return new FacebookAuthenticationResult(m_FacebookClient, returnUrl);
}
else
{
// TODO: can we check response status codes to see if request was successful?
var baseTokenUrl = "https://graph.facebook.com/me?access_token=";
var requestUrl = String.Format("{0}{1}", baseTokenUrl, Uri.EscapeDataString(authorization.AccessToken));
var claimedIdentifier = String.Format("{0}{1}", baseTokenUrl, authorization.AccessToken.Split('|')[0]);
var request = WebRequest.Create(requestUrl);
using (var response = request.GetResponse())
{
using (var responseStream = response.GetResponseStream())
{
var graph = FacebookGraph.Deserialize(responseStream);
var token …Run Code Online (Sandbox Code Playgroud) 我有一个 DAG,它是通过查询 DynamoDB 的列表创建的,对于列表中的每个项目,使用 PythonOperator 创建一个任务并将其添加到 DAG。在下面的示例中未显示,但重要的是要注意列表中的某些项目依赖于其他任务,因此我使用它set_upstream来强制执行依赖关系。
- airflow_home
\- dags
\- workflow.py
Run Code Online (Sandbox Code Playgroud)
工作流.py
def get_task_list():
# ... query dynamodb ...
def run_task(task):
# ... do stuff ...
dag = DAG(dag_id='my_dag', ...)
tasks = get_task_list()
for task in tasks:
t = PythonOperator(
task_id=task['id'],
provide_context=False,
dag=dag,
python_callable=run_task,
op_args=[task]
)
Run Code Online (Sandbox Code Playgroud)
问题是workflow.py一遍又一遍地运行(每次任务运行时?),我的get_task_list()方法受到 AWS 的限制并抛出异常。
我认为这是因为无论何时run_task()被调用,它都会运行所有全局变量,workflow.py所以我尝试run_task()进入一个单独的模块,如下所示:
- airflow_home
\- dags
\- workflow.py
\- mypackage
\- __init__
\- task.py
Run Code Online (Sandbox Code Playgroud)
但这并没有改变任何事情。我什至尝试放入get_task_list()一个用工厂函数包装的 SubDagOperator,它的行为方式仍然相同。 …
我在 AWS ECS 上运行 apache-airflow 1.8.1,并且有一个 AWS ElastiCache 集群 (redis 3.2.4),运行 2 个分片/2 个启用多可用区的节点(集群 Redis 引擎)。我已经验证气流可以毫无问题地访问集群的主机/端口。
这是日志:
Thu Jul 20 01:39:21 UTC 2017 - Checking for redis (endpoint: redis://xxxxxx.xxxxxx.clustercfg.usw2.cache.amazonaws.com:6379) connectivity
Thu Jul 20 01:39:21 UTC 2017 - Connected to redis (endpoint: redis://xxxxxx.xxxxxx.clustercfg.usw2.cache.amazonaws.com:6379)
logging to s3://xxxx-xxxx-xxxx/logs/airflow
Starting worker
[2017-07-20 01:39:44,020] {__init__.py:57} INFO - Using executor CeleryExecutor
[2017-07-20 01:39:45,960] {driver.py:120} INFO - Generating grammar tables from /usr/lib/python2.7/lib2to3/Grammar.txt
[2017-07-20 01:39:45,989] {driver.py:120} INFO - Generating grammar tables from /usr/lib/python2.7/lib2to3/PatternGrammar.txt
[2017-07-20 01:39:53,352] {__init__.py:57} INFO - …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 SMO(VS 2010、SQL Server 2008)连接到 SQL Server 并查看服务器协议配置。我可以连接并列出服务和 ClientProtocols 以及运行 MSSQLSERVER 服务的帐户。但是,ServerInstances 集合是空的。目标服务器上唯一的实例是默认的 (MSSQLSERVER),它不应该在集合中吗?如何获取它的实例以便检查 ServerProtocols 集合?这是我正在使用的代码:
class Program
{
static void Main(string[] args)
{
//machine hosting installed sql server instance
ManagedComputer host = new ManagedComputer("fully-qualified.host.name");
if (host.ServerInstances.Count != 0)
{
//why is this 0? Is it because only the DEFAULT instance exists?
Console.WriteLine("/////////////// INSTANCES ////////////////");
foreach (ServerInstance inst in host.ServerInstances)
{
Console.WriteLine(inst.Name);
}
}
Console.WriteLine("/////////////// SERVICES ////////////////");
// enumerate sql services (looking for MSSSQLSERVER)
foreach (Service svc in host.Services)
{ …Run Code Online (Sandbox Code Playgroud)