1.我写了一个程序,读取hbase中的五个表并且做连接查询,在eclise中本地可以直接测试,没有配置文件,直接把hbase和spark的jar包拷贝进去就可以了
package sparlsql.hbase;
import org.apache.hadoop.hbase.client._
import org.apache.hadoop.hbase.io.ImmutableBytesWritable
import org.apache.hadoop.hbase.mapreduce.TableInputFormat
import org.apache.hadoop.hbase.{TableName, HBaseConfiguration}
import org.apache.hadoop.hbase.util.Bytes
import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkContext, SparkConf}
import java.util.Date
object SparkSQLOnHbase {
def main(args: Array[String]): Unit = {
val starttime=System.nanoTime
// 本地模式运行,便于测试
val sparkConf = new SparkConf().setMaster("local").setAppName("HBaseTest")
// 创建hbase configuration
val hBaseConf = HBaseConfiguration.create()
hBaseConf.set("hbase.zookeeper.property.clientPort", "2181");
hBaseConf.set("hbase.zookeeper.quorum", "192.168.10.82");
//var con = ConnectionFactory.createConnection(hBaseConf)
//var table = con.getTable(TableName.valueOf(""))
hBaseConf.set(TableInputFormat.INPUT_TABLE,"test_lcc_mycase")
// 创建 spark context
val sc = new SparkContext(sparkConf)
val sqlContext = new SQLContext(sc)
import sqlContext.implicits._
// 从数据源获取数据
var hbaseRDD = sc.newAPIHadoopRDD(hBaseConf,classOf[TableInputFormat],classOf[ImmutableBytesWritable],classOf[Result])
// 将数据映射为表 也就是将 RDD转化为 dataframe schema
val mycase = hbaseRDD.map(r=>(
Bytes.toString(r._2.getValue(Bytes.toBytes("case_lizu"),Bytes.toBytes("c_code"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("case_lizu"),Bytes.toBytes("c_rcode"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("case_lizu"),Bytes.toBytes("c_region"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("case_lizu"),Bytes.toBytes("c_cate"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("case_lizu"),Bytes.toBytes("c_start"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("case_lizu"),Bytes.toBytes("c_end"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("case_lizu"),Bytes.toBytes("c_start_m"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("case_lizu"),Bytes.toBytes("c_end_m"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("case_lizu"),Bytes.toBytes("c_name"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("case_lizu"),Bytes.toBytes("c_mark")))
)).toDF("c_code","c_rcode","c_region","c_cate","c_start","c_end","c_start_m","c_end_m","c_name","c_mark")
mycase.registerTempTable("mycase")
hBaseConf.set(TableInputFormat.INPUT_TABLE,"test_lcc_pcase")
hbaseRDD = sc.newAPIHadoopRDD(hBaseConf,classOf[TableInputFormat],classOf[ImmutableBytesWritable],classOf[Result])
val pcase = hbaseRDD.map(r=>(
Bytes.toString(r._2.getValue(Bytes.toBytes("pcase_lizu"),Bytes.toBytes("p_code"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("pcase_lizu"),Bytes.toBytes("p_status")))
)).toDF("p_code","p_status")
pcase.registerTempTable("p_case")
hBaseConf.set(TableInputFormat.INPUT_TABLE,"test_lcc_crimeman")
hbaseRDD = sc.newAPIHadoopRDD(hBaseConf,classOf[TableInputFormat],classOf[ImmutableBytesWritable],classOf[Result])
val crimeman = hbaseRDD.map(r=>(
Bytes.toString(r._2.getValue(Bytes.toBytes("cm_lizu"),Bytes.toBytes("m_acode"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("cm_lizu"),Bytes.toBytes("m_pcode")))
)).toDF("m_acode","m_pcode")
crimeman.registerTempTable("crimeman")
hBaseConf.set(TableInputFormat.INPUT_TABLE,"test_lcc_wb")
hbaseRDD = sc.newAPIHadoopRDD(hBaseConf,classOf[TableInputFormat],classOf[ImmutableBytesWritable],classOf[Result])
val wb = hbaseRDD.map(r=>(
Bytes.toString(r._2.getValue(Bytes.toBytes("wb_lizu"),Bytes.toBytes("w_id"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("wb_lizu"),Bytes.toBytes("w_region"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("wb_lizu"),Bytes.toBytes("w_wname"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("wb_lizu"),Bytes.toBytes("w_address"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("wb_lizu"),Bytes.toBytes("w_uname"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("wb_lizu"),Bytes.toBytes("w_code"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("wb_lizu"),Bytes.toBytes("w_start"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("wb_lizu"),Bytes.toBytes("w_end"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("wb_lizu"),Bytes.toBytes("w_start_m"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("wb_lizu"),Bytes.toBytes("w_end_m")))
)).toDF("w_id","w_region","w_wname","w_address","w_uname","w_code","w_start","w_end","w_start_m","w_end_m")
wb.registerTempTable("wb")
hBaseConf.set(TableInputFormat.INPUT_TABLE,"test_lcc_hotel")
hbaseRDD = sc.newAPIHadoopRDD(hBaseConf,classOf[TableInputFormat],classOf[ImmutableBytesWritable],classOf[Result])
val hotel = hbaseRDD.map(r=>(
Bytes.toString(r._2.getValue(Bytes.toBytes("hotel_lizu"),Bytes.toBytes("h_id"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("hotel_lizu"),Bytes.toBytes("h_region"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("hotel_lizu"),Bytes.toBytes("h_hname"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("hotel_lizu"),Bytes.toBytes("h_address"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("hotel_lizu"),Bytes.toBytes("h_uname"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("hotel_lizu"),Bytes.toBytes("h_code"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("hotel_lizu"),Bytes.toBytes("h_start"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("hotel_lizu"),Bytes.toBytes("h_end"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("hotel_lizu"),Bytes.toBytes("h_start_m"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("hotel_lizu"),Bytes.toBytes("h_end_m"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("hotel_lizu"),Bytes.toBytes("h_homecode")))
)).toDF("h_id","h_region","h_hname","h_address","h_uname","h_code","h_start","h_end","h_start_m","h_end_m","h_homecode")
hotel.registerTempTable("hotel")
// 测试
val df5 = sqlContext.sql("select c_code,c_cate,c_name,c_region,c_start,c_end,p_status,w_region,w_wname,w_uname,w_code,w_address,w_start,w_end from mycase inner join p_case on mycase.c_code=p_case.p_code inner join wb on mycase.c_rcode=wb.w_region where p_status !='破案状态' and ( c_start_m - 86400000 * 1 )< w_start_m and w_end_m < ( c_start_m + 86400000 * 1 ) limit 100")
df5.show(100)
//println(df5.count())
// df5.collect().foreach(print(_))
val endtime=System.nanoTime
val delta=endtime-starttime
println(delta/1000000000)
}
}
运行结果是正确的,但是效率实在是太低下了,因为是本地运行。想让他集群运行测试
package sparlsql.hbase;
import org.apache.hadoop.hbase.client._
import org.apache.hadoop.hbase.io.ImmutableBytesWritable
import org.apache.hadoop.hbase.mapreduce.TableInputFormat
import org.apache.hadoop.hbase.{TableName, HBaseConfiguration}
import org.apache.hadoop.hbase.util.Bytes
import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkContext, SparkConf}
import java.util.Date
object SparkSQLOnHbase {
def main(args: Array[String]): Unit = {
/* System.setProperty("hadoop.home.dir", "E:\\02-hadoop\\hadoop-2.7.3\\");
System.setProperty("hadoop_conf_dir", "E:\\02-hadoop\\hadoop-2.7.3\\etc\\hadoop\\");
System.setProperty("HADOOP_USER_NAME", "root");
System.setProperty("spark.home.dir", "E:\\002-spark\\spark-2.1.1-bin-hadoop2.7\\");
System.setProperty("spark.serializer", "org.apache.spark.serializer.KryoSerializer");*/
val starttime=System.nanoTime
// 这里怎么设置master,都会出错,最后不设置,直接打包运行就可以了
// val sparkConf = new SparkConf().setMaster("yarn").setAppName("HBaseTest")
// val sparkConf = new SparkConf().setMaster("spark://bigdata02.hzjs.co:7077").setAppName("HBaseTest")
//val sparkConf = new SparkConf().setMaster("yarn-client").setAppName("HBaseTest")
//val sparkConf = new SparkConf().setMaster("yarn-cluster").setAppName("HBaseTest")
//val sparkConf = new SparkConf().setMaster("yarn").setAppName("HBaseTest")
// val sparkConf = new SparkConf().setMaster("local").setAppName("HBaseTest")
val sparkConf = new SparkConf().setAppName("HBaseTest")
// 创建hbase configuration
val hBaseConf = HBaseConfiguration.create()
hBaseConf.set("hbase.zookeeper.property.clientPort", "2181");
hBaseConf.set("hbase.zookeeper.quorum", "192.168.10.82");
//var con = ConnectionFactory.createConnection(hBaseConf)
//var table = con.getTable(TableName.valueOf(""))
hBaseConf.set(TableInputFormat.INPUT_TABLE,"test_lcc_mycase")
// 创建 spark context
val sc = new SparkContext(sparkConf)
val sqlContext = new SQLContext(sc)
import sqlContext.implicits._
// 从数据源获取数据
var hbaseRDD = sc.newAPIHadoopRDD(hBaseConf,classOf[TableInputFormat],classOf[ImmutableBytesWritable],classOf[Result])
// 将数据映射为表 也就是将 RDD转化为 dataframe schema
val mycase = hbaseRDD.map(r=>(
Bytes.toString(r._2.getValue(Bytes.toBytes("case_lizu"),Bytes.toBytes("c_code"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("case_lizu"),Bytes.toBytes("c_rcode"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("case_lizu"),Bytes.toBytes("c_region"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("case_lizu"),Bytes.toBytes("c_cate"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("case_lizu"),Bytes.toBytes("c_start"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("case_lizu"),Bytes.toBytes("c_end"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("case_lizu"),Bytes.toBytes("c_start_m"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("case_lizu"),Bytes.toBytes("c_end_m"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("case_lizu"),Bytes.toBytes("c_name"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("case_lizu"),Bytes.toBytes("c_mark")))
)).toDF("c_code","c_rcode","c_region","c_cate","c_start","c_end","c_start_m","c_end_m","c_name","c_mark")
mycase.registerTempTable("mycase")
hBaseConf.set(TableInputFormat.INPUT_TABLE,"test_lcc_pcase")
hbaseRDD = sc.newAPIHadoopRDD(hBaseConf,classOf[TableInputFormat],classOf[ImmutableBytesWritable],classOf[Result])
val pcase = hbaseRDD.map(r=>(
Bytes.toString(r._2.getValue(Bytes.toBytes("pcase_lizu"),Bytes.toBytes("p_code"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("pcase_lizu"),Bytes.toBytes("p_status")))
)).toDF("p_code","p_status")
pcase.registerTempTable("p_case")
hBaseConf.set(TableInputFormat.INPUT_TABLE,"test_lcc_crimeman")
hbaseRDD = sc.newAPIHadoopRDD(hBaseConf,classOf[TableInputFormat],classOf[ImmutableBytesWritable],classOf[Result])
val crimeman = hbaseRDD.map(r=>(
Bytes.toString(r._2.getValue(Bytes.toBytes("cm_lizu"),Bytes.toBytes("m_acode"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("cm_lizu"),Bytes.toBytes("m_pcode")))
)).toDF("m_acode","m_pcode")
crimeman.registerTempTable("crimeman")
hBaseConf.set(TableInputFormat.INPUT_TABLE,"test_lcc_wb")
hbaseRDD = sc.newAPIHadoopRDD(hBaseConf,classOf[TableInputFormat],classOf[ImmutableBytesWritable],classOf[Result])
val wb = hbaseRDD.map(r=>(
Bytes.toString(r._2.getValue(Bytes.toBytes("wb_lizu"),Bytes.toBytes("w_id"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("wb_lizu"),Bytes.toBytes("w_region"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("wb_lizu"),Bytes.toBytes("w_wname"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("wb_lizu"),Bytes.toBytes("w_address"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("wb_lizu"),Bytes.toBytes("w_uname"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("wb_lizu"),Bytes.toBytes("w_code"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("wb_lizu"),Bytes.toBytes("w_start"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("wb_lizu"),Bytes.toBytes("w_end"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("wb_lizu"),Bytes.toBytes("w_start_m"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("wb_lizu"),Bytes.toBytes("w_end_m")))
)).toDF("w_id","w_region","w_wname","w_address","w_uname","w_code","w_start","w_end","w_start_m","w_end_m")
wb.registerTempTable("wb")
hBaseConf.set(TableInputFormat.INPUT_TABLE,"test_lcc_hotel")
hbaseRDD = sc.newAPIHadoopRDD(hBaseConf,classOf[TableInputFormat],classOf[ImmutableBytesWritable],classOf[Result])
val hotel = hbaseRDD.map(r=>(
Bytes.toString(r._2.getValue(Bytes.toBytes("hotel_lizu"),Bytes.toBytes("h_id"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("hotel_lizu"),Bytes.toBytes("h_region"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("hotel_lizu"),Bytes.toBytes("h_hname"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("hotel_lizu"),Bytes.toBytes("h_address"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("hotel_lizu"),Bytes.toBytes("h_uname"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("hotel_lizu"),Bytes.toBytes("h_code"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("hotel_lizu"),Bytes.toBytes("h_start"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("hotel_lizu"),Bytes.toBytes("h_end"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("hotel_lizu"),Bytes.toBytes("h_start_m"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("hotel_lizu"),Bytes.toBytes("h_end_m"))),
Bytes.toString(r._2.getValue(Bytes.toBytes("hotel_lizu"),Bytes.toBytes("h_homecode")))
)).toDF("h_id","h_region","h_hname","h_address","h_uname","h_code","h_start","h_end","h_start_m","h_end_m","h_homecode")
hotel.registerTempTable("hotel")
// 测试
var df1 = sqlContext.sql("select c_code,c_cate,c_name,c_start,c_end from mycase limit 100")
df1.show(10)
//println(df5.count())
// df5.collect().foreach(print(_))
var endtime1=System.nanoTime
var delta=endtime1-starttime
println("===============1=====================")
println(delta/1000000000)
}
}
因为设置了master所以各种报错
eclipse直接运行报错
17/08/17 09:25:35 WARN StandaloneAppClient$ClientEndpoint: Failed to connect to master bigdata02.hzjs.co:7077
org.apache.spark.SparkException: Exception thrown in awaitResult
at org.apache.spark.rpc.RpcTimeout$$anonfun$1.applyOrElse(RpcTimeout.scala:77)
at org.apache.spark.rpc.RpcTimeout$$anonfun$1.applyOrElse(RpcTimeout.scala:75)
17/08/17 09:51:01 ERROR SparkContext: Error initializing SparkContext.
org.apache.spark.SparkException: Detected yarn cluster mode, but isn't running on a cluster. Deployment to YARN is not supported directly by SparkContext. Please use spark-submit.
at org.apache.spark.SparkContext.(SparkContext.scala:387)
at sparlsql.hbase.SparkSQLOnHbase$.main(SparkSQLOnHbase.scala:37)
集群打包测试
SPARK_HOME/bin/spark-submit --name "lcc_sparkSql_submit" --master spark://192.168.10.83:7077 --executor-memory 1G --class sparlsql.hbase.SparkSQLOnHbase /data5/lcc_sparksql_hbase_test_data/aa.jar /data5/lcc_sparksql_hbase_test_data/logs/ /data5/lcc_sparksql_hbase_test_data/output
报错
17/08/17 09:51:01 ERROR SparkContext: Error initializing SparkContext.
org.apache.spark.SparkException: Detected yarn cluster mode, but isn't running on a cluster. Deployment to YARN is not supported directly by SparkContext. Please use spark-submit.
at org.apache.spark.SparkContext.(SparkContext.scala:387)
at sparlsql.hbase.SparkSQLOnHbase$.main(SparkSQLOnHbase.scala:37)
试验往上方法
YARN模式
修改的代码如下:
SparkConf conf = new SparkConf().setAppName("JavaWordCount").setMaster("yarn-client");
conf.set("spark.yarn.dist.files", "src\\yarn-site.xml");
将core-site.xml、hdfs-site.xml、yarn-site.xml三个文件放在项目src文件夹下,这三个文件从Hadoop集群配置文件夹中复制下来,直接run Java application就可以了。
还是报错
设置spark本地目录还是报错
System.setProperty("hadoop.home.dir", "E:\\02-hadoop\\hadoop-2.7.3\\");
System.setProperty("hadoop_conf_dir", "E:\\02-hadoop\\hadoop-2.7.3\\etc\\hadoop\\");
java.lang.IllegalStateException: Library directory 'E:\04-scala_eclipse\01-work\hbasesparksql\assembly\target\scala-2.11\jars' does not exist; make sure Spark is built.
at org.apache.spark.launcher.CommandBuilderUtils.checkState(CommandBuilderUtils.java:248)
at org.apache.spark.launcher.CommandBuilderUtils.findJarsDir(CommandBuilderUtils.java:368)
最后使用如上代码不设置master,使用下面命令运行,不报错,成功
$SPARK_HOME/bin/spark-submit --name "lcc_sparkSql_submit" --master yarn --executor-memory 1G --class sparlsql.hbase.SparkSQLOnHbase /data5/lcc_sparksql_hbase_test_data/nomaster.jar /data5/lcc_sparksql_hbase_test_data/logs/ /data5/lcc_sparksql_hbase_test_data/output
成功
ase instead use:
- ./spark-submit with --num-executors to specify the number of executors
- Or set SPARK_EXECUTOR_INSTANCES
- spark.executor.instances to configure the number of instances in the spark config.
17/08/17 12:36:09 WARN Client: Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.
[Stage 3:======================================================>(198 + 1) / 200]
17/08/17 12:40:59 WARN DFSClient: Slow ReadProcessor read fields took 177333ms (threshold=30000ms); ack: seqno: 25 reply: SUCCESS reply: SUCCESS reply: SUCCESS downstreamAckTimeNanos: 1000737 flag: 0 flag: 0 flag: 0, targets: [DatanodeInfoWithStorage[192.168.10.82:50010,DS-1a236504-da74-4b82-9c9e-3b6e3f724678,DISK], DatanodeInfoWithStorage[192.168.10.83:50010,DS-dd8a2e2b-18fd-4de8-91df-bcb392cb8008,DISK], DatanodeInfoWithStorage[192.168.10.84:50010,DS-34b8a8b1-414e-497b-bdfd-d139338afdda,DISK]]
17/08/17 12:43:36 WARN DFSClient: Slow ReadProcessor read fields took 157115ms (threshold=30000ms); ack: seqno: 29 reply: SUCCESS reply: SUCCESS reply: SUCCESS downstreamAckTimeNanos: 1803294 flag: 0 flag: 0 flag: 0, targets: [DatanodeInfoWithStorage[192.168.10.82:50010,DS-1a236504-da74-4b82-9c9e-3b6e3f724678,DISK], DatanodeInfoWithStorage[192.168.10.83:50010,DS-dd8a2e2b-18fd-4de8-91df-bcb392cb8008,DISK], DatanodeInfoWithStorage[192.168.10.84:50010,DS-34b8a8b1-414e-497b-bdfd-d139338afdda,DISK]]
+-------+------+----------+--------+-------------------+-------------------+--------+--------+-------+-------+------+----------------+-------------------+-------------------+
| c_code|c_cate| c_name|c_region| c_start| c_end|p_status|w_region|w_wname|w_uname|w_code| w_address| w_start| w_end|
+-------+------+----------+--------+-------------------+-------------------+--------+--------+-------+-------+------+----------------+-------------------+-------------------+
|A102046| 杀人案件|案件名称102046| 杭州市萧山区|2566/08/17 00:00:00|2566/08/17 01:00:00| 移送起诉| 7| 网吧436| 姓名59| U283| 杭州市萧山区xx112路94号|2566/08/17 00:00:00|2566/08/17 00:00:00|
|A102046| 杀人案件|案件名称102046| 杭州市萧山区|2566/08/17 00:00:00|2566/08/17 01:00:00| 移送起诉| 7| 网吧914| 姓名80| U687|杭州市萧山区xx926路524号|2566/08/17 00:00:00|2566/08/17 18:00:00|
|A103790| 杀人案件|案件名称103790| 杭州市萧山区|2576/01/04 00:00:00|2576/01/04 15:00:00| 移送起诉| 7| 网吧113| 姓名56| U728| 杭州市萧山区xx833路65号|2576/01/04 00:00:00|2576/01/04 14:00:00|
|A110867| 强奸案件|案件名称110867| 杭州市萧山区|2614/04/22 00:00:00|2614/04/22 17:00:00| 侦查终结| 7| 网吧750| 姓名83| U717| 杭州市萧山区xx16路35号|2614/04/22 00:00:00|2614/04/22 07:00:00|
|A114483| 强奸案件|案件名称114483| 杭州市萧山区|2633/12/14 00:00:00|2633/12/14 17:00:00| 移送起诉| 7| 网吧343| 姓名63| U119|杭州市萧山区xx364路685号|2633/12/14 00:00:00|2633/12/14 13:00:00|