memcahed set命令输入数据后不返回STORED是什么原因?

本文探讨了memcached中set命令的使用方法及常见问题。当指定长度与实际输入长度不符时,memcached不会返回STORED确认信息。文章通过具体实例展示了如何确保数据正确存储。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

memcahed set命令输入数据后不返回STORED是什么原因?(截图如下)


原因:

set指定的长度与输入值的长度不相等

我们输入与指定长度的值试试:


OK,返回STORED了!说明值存储成功了!

<think>嗯,用户问的是“STORED BY 在 SQL 中是什么意思”,首先需要确认上下文。用户之前询问了如何在Hive中将数据写入MySQL,现在可能对Hive的语法有进一步的问题。 首先,得判断用户是否在问标准的SQL还是Hive的扩展SQL。因为在标准SQL里没有STORED BY这个关键字,所以很可能用户是在Hive的上下文中遇到的。之前对话里提到过Hive的外部表使用STORED BY映射到MySQL,所以用户可能对此有疑问。 接下来要解释STORED BY在Hive中的作用。需要说明它是用于指定存储处理器的,通常和外部表结合使用,连接其他数据库如MySQL。要对比Hive中的STORED AS,说明两者的同,STORED AS是定义数据存储格式,而STORED BY是定义存储处理器。 然后需要举例子,比如之前的MySQL映射表的例子,说明STORED BY后面跟的类名,以及相关的TBLPROPERTIES参数。还要提到其他应用场景,比如HBase或自定义存储处理器,这样用户能理解其灵活性。 同时要注意用户可能的疑问点,比如STORED BY和外部表的关系,以及和普通内部表的区别。可能用户会混淆STORED BY和STORED AS,需要明确区分。 最后需要总结,强调STORED BY在Hive中的特定用途,并提醒用户注意驱动和配置的问题。确保回答结构清晰,分点说明,让用户逐步理解。</think>在 Hive SQL 中,`STORED BY` 是一个**关键语法**,用于定义表的存储处理器(Storage Handler)。它是 Hive 实现**跨系统数据交互**的核心机制,主要应用于创建与外部系统(如 MySQL、HBase 等)关联的**外部表**。以下是详细解析: --- ### 一、核心作用 `STORED BY` 的作用是指定: 1. **数据存储格式**:非 Hive 原生支持的存储类型(如关系型数据库、NoSQL 等) 2. **数据访问方式**:定义如何从外部系统读写数据(通过 JDBC、自定义 API 等) --- ### 二、与 `STORED AS` 的区别 | 语法 | 用途 | 示例场景 | |---------------|----------------------------------------------------------------------|------------------------------| | `STORED BY` | 定义**外部存储处理器**(需要实现 Hive 的 `StorageHandler` 接口) | 映射 MySQL、HBase、Elasticsearch | | `STORED AS` | 定义**本地文件存储格式**(如文本、Parquet、ORC 等) | 存储为 Parquet/CSV/JSON 文件 | --- ### 三、典型使用场景 #### 1. 映射 MySQL 表(如你之前的问题) ```sql CREATE EXTERNAL TABLE hive_mysql_table (...) STORED BY 'org.apache.hadoop.hive.jdbc.storagehandler.JdbcStorageHandler' TBLPROPERTIES (...); ``` #### 2. 映射 HBase 表 ```sql CREATE EXTERNAL TABLE hive_hbase_table (...) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES (...) TBLPROPERTIES ('hbase.table.name' = 'hbase_namespace:table_name'); ``` #### 3. 自定义存储处理器 ```sql STORED BY 'com.example.CustomStorageHandler' -- 需实现 Hive API ``` --- ### 四、关键配置参数 通过 `TBLPROPERTIES` 传递参数: ```sql TBLPROPERTIES ( "mapred.jdbc.driver.class" = "...", -- JDBC 驱动类 "mapred.jdbc.url" = "...", -- 数据库连接地址 "mapred.jdbc.username" = "...", -- 用户名 "mapred.jdbc.password" = "...", -- 密码 "mapred.jdbc.input.table.name" = "..." -- 外部系统表名 ); ``` --- ### 五、底层原理 1. **存储处理器类**:需继承 `org.apache.hadoop.hive.ql.metadata.DefaultStorageHandler` 2. **实现接口**: - `getInputFormat()`:定义数据读取方式 - `getOutputFormat()`:定义数据写入方式 - `configureTableJobProperties()`:配置任务参数 --- ### 六、注意事项 1. **驱动依赖**:需提前将 JDBC 驱动 JAR 包部署到 Hive 服务端和所有节点 2. **权限控制**:外部系统的访问权限需单独配置 3. **性能影响**:直接读写外部系统可能比操作 HDFS 慢,建议用于低频场景 --- ### 七、总结 `STORED BY` 是 Hive 实现**联邦查询(Federation)**的关键语法,通过它可以让 Hive: - 直接读写 MySQL/Oracle 等关系型数据库 - 与 HBase/Cassandra 等 NoSQL 数据库交互 - 对接自定义存储系统(需开发适配器) 这种设计使得 Hive 可以突破 HDFS 的边界,成为**跨系统的数据枢纽**。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值